home *** CD-ROM | disk | FTP | other *** search
/ Hornet Underground 2 / Hornet Underground Volume 2.iso / pc_demos.faq < prev    next >
Text File  |  1997-07-10  |  134KB  |  3,327 lines

  1.                                 PC DEMOS FAQ
  2.  
  3.                                 Version 2.01
  4.  
  5.        The official FAQ of the Usenet Newsgroup comp.sys.ibm.pc.demos
  6.  
  7. ---------------------------------------------------------------------------
  8.  
  9. New Since Last Version -- PLEASE READ:
  10.  
  11. I've moved ISPs!  You can now find the HTML version of this FAQ at:
  12.  
  13.      http://boxotrix.it-ias.depaul.edu/trixter/docs/pcdemos.faq.html
  14.  
  15. ---------------------------------------------------------------------------
  16.  
  17. Introduction:
  18.  
  19. This is a list of Frequently Asked Questions regarding PC demos. (Not game
  20. or product demos, but the "hacker" or "underground" type of demo.) The
  21. information contained in this FAQ is geared mainly toward people with IBM
  22. PCs or compatibles with Internet access, although much of the information
  23. is useful to people asking questions about demos in general. All questions
  24. are answered by the maintainer (trixter@mcs.com), although corrections and
  25. additions by other parties are encouraged.
  26.  
  27. At times, Trixter will use and/or reprint information obtained directly
  28. from individuals on the newsgroup comp.sys.ibm.pc.demos to answer questions
  29. more effectively. (This is known as "contributing to the FAQ", even if you
  30. didn't know you were doing it. :-) A list of everyone who's contributed to
  31. the FAQ in some way is available at the end of the FAQ. Authors of
  32. contributions are given where specified; if you don't see your name listed
  33. in conjunction with a passage of this FAQ, please email me to get it
  34. corrected.
  35.  
  36. Other Sources For This FAQ:
  37.  
  38. If you prefer viewing this FAQ via the World Wide Web, you may do so at:
  39.  
  40.      http://www.mcs.net/~trixter/docs/pcdemos.faq.html
  41.  
  42. If you're interested in Amiga demos, this isn't the FAQ you should be
  43. reading. That FAQ is the alt.sys.amiga.demos FAQ for Amiga demos by
  44. Hollywood/AXIS (hollywood@kosmic.org).
  45.  
  46. If you're looking for something specific and you're not viewing the WWW
  47. version (see above for URL), use your file viewer's case-insensitive search
  48. function to find all occurances of it.
  49.  
  50. ---------------------------------------------------------------------------
  51. Index:
  52. ---------------------------------------------------------------------------
  53.  
  54. General:
  55.  
  56.      (1.0) What is a Demo?
  57.      (1.0.1) Where do/did demos come from?
  58.      (1.1) How/Where do I get a demo?
  59.      (1.2) What are the best Demos?
  60.      (1.3) I can't get this Demo to run! What can I do?
  61.      (1.3.1) What's the best PC system to run a demo?
  62.  
  63. How to create demos:
  64.  
  65.      (2.0) What Compilers do I use?
  66.      (2.1) Are there any programming references I can read?
  67.      (2.2) Where can I find some example Source Code?
  68.      (2.2.1) I'm no idiot--I want some REAL programming info!
  69.      (2.3) Where can I find some painting programs?
  70.      (2.4) Where are some music composition programs? Which one should I
  71.      use?
  72.      (2.4.1) How can I play music modules from my own code?
  73.  
  74. Demos and the Internet:
  75.  
  76.      (3.0) Is there a place on the Internet I can learn more about demos?
  77.      (3.0.1) What can I talk about on comp.sys.ibm.pc.demos?
  78.      (3.0.2) What can I *NOT* talk about on comp.sys.ibm.pc.demos?
  79.      (3.0.3) I'm new at this... How can I post a message without sounding
  80.      like a total fool?
  81.      (3.0.4) Can I erase my old postings?
  82.      (3.1) What's IRC? Are there any IRC channels established for demos?
  83.      (3.2) What's the World Wide Web (WWW)? Are there any places to learn
  84.      about demos on the WWW?
  85.      (3.3) Are there any newsletters about demos?
  86.      (3.4) How can I contact demo people?
  87.      (3.5) Are there any Demo BBS's on the Internet?
  88.  
  89. Sound Questions:
  90.  
  91.      (4.0) What are the different types of GUS sound cards?
  92.      (4.1) Why is the Gravis Ultrasound sound card supported more than the
  93.      Sound Blaster in demos?
  94.      (4.2) Why is the Gravis Ultrasound sound card supported more than
  95.      General MIDI?
  96.      (4.3) Has MIDI been used in any demos?
  97.      (4.4) Why is the Gravis Ultrasound sound card supported more than the
  98.      Sound Blaster AWE32?
  99.      (4.5) Can I emulate the GUS with my Sound Blaster?
  100.      (4.6) Why does my Sound Blaster 16 not output stereo with demos?
  101.  
  102. Graphics Questions:
  103.  
  104.      (5.0) Which video card is best for viewing demos?
  105.      (5.1) What's Mode X?
  106.      (5.2) Why is Mode 13 sometimes faster than Mode X?
  107.      (5.3) This demo requires VESA or UNIVBE. Where can I get it?
  108.  
  109. Slang/Glossary/Terms:
  110.  
  111.      (6.0) What's a diskmag?
  112.      (6.1) What's a musicdisk?
  113.      (6.2) How is a musicdisk different from a music pack?
  114.  
  115. Demo Groups:
  116.  
  117.      (7.0) How can I create or join a demo group?
  118.      (7.1) Whatever happened to Future Crew?
  119.      (7.2) Whatever happened to Triton?
  120.      (7.3) Whatever happened to Cascada?
  121.      (7.4) Whatever happened to Twilight Zone?
  122.      (7.5) Whatever happened to Byterapers?
  123.      (7.6) Whatever happened to Vibrants?
  124.  
  125. Demo Parties/Compos:
  126.  
  127.      (8.0) What's a Demo Party? What's a Demo Compo?
  128.      (8.1) When and Where are Demo Parties held?
  129.      (8.2) How are Demo Compos judged?
  130.  
  131. Operating Systems and Platforms:
  132.  
  133.      (9.0) Why aren't there any Windows/Windows 95 demos?
  134.      (9.1) Why aren't there any Linux demos?
  135.      (9.2) Are there any demos that run on PC platforms that aren't
  136.      DOS-based?
  137.      (9.3) I don't own a PC. Are demos written for other computers?
  138.      (9.4) Are Amiga groups migrating to the PC?
  139.      (9.5) Are there any Java demos?
  140.      (9.6) Why aren't there any BeBox demos?
  141.  
  142. Technical/Programming Info:
  143.  
  144.      (10.0) What's the fastest PutPixel?
  145.      (10.1) How do I program a Vertical-Blank Interrupt?
  146.      (10.2) How long is one "clock cycle" on a particular machine?
  147.      (10.3) How do you do environment mapping?
  148.      (10.4) How can I do a DMA Putpixel or DMA Mem-to-Mem copy?
  149.      (10.5) What's protected mode?
  150.      (10.6) How do you do bump mapping?
  151.      (10.7) What's a fast way to calculate a square root?
  152.      (10.8) What's Karl/NoooN's famous 40-byte sinus generator?
  153.      (10.9) Where can I get more info on programming VESA?
  154.      (10.10) I'm having trouble getting a VESA 2.0 Linear Frame Buffer
  155.      working... any tips?
  156.      (10.11) Where can I find a list of Intel 80x86 opcodes?
  157.  
  158. Misc. Information:
  159.  
  160.      (11.0) What CDROMs exist with demo-related material on them?
  161.      (11.1) I want to create my own demo or demo-music CDROM... What's
  162.      involved?
  163.      (11.2) What are some of the more interesting quotes said in the
  164.      demoscene?
  165.      (11.3) What are some of the hidden parts in demos?
  166.      (11.4) Where did the "I am not an Atomic Playboy" sample come from?
  167.      (11.5) Where did "Is everybody in?" sample come from?
  168.      (11.6) Are there really 23,800 faces in the bee object in Stars /
  169.      NoooN?
  170.      (11.7) How many people read comp.sys.ibm.pc.demos?
  171.  
  172. FAQ information:
  173.  
  174.      (100.0) Who's contributed to this FAQ?
  175.      (100.1) How can I contact you to submit something?
  176.  
  177. FAQ Greets
  178.  
  179. ---------------------------------------------------------------------------
  180. General:
  181. ---------------------------------------------------------------------------
  182.  
  183. (1.0) What is a Demo?
  184.  
  185. A Demo is a program that displays a sound, music, and light show, usually
  186. in 3D. Demos are very fun to watch, because they seemingly do things that
  187. aren't possible on the machine they were programmed on.
  188.  
  189. Essentially, demos "show off". They do so in usually one, two, or all three
  190. of three following methods:
  191.  
  192.    * They show off the computer's hardware abilities (3D objects,
  193.      multi-channel sound, etc.)
  194.    * They show off the creative abilities of the demo group (artists,
  195.      musicians)
  196.    * They show off the programmer's abilities (fast 3D shaded polygons,
  197.      complex motion, etc.)
  198.  
  199. Demos are an art form. They blend mathematics, programming skill, and
  200. creativity into something incredible to watch and listen to.
  201.  
  202. ---------------------------------------------------------------------------
  203.  
  204. (1.0.1) Where did/do demos come from?
  205.  
  206. Demos started as loaders for cracked games (a loader is a small program
  207. that was used to identify who had cracked the game you were currently
  208. playing.) This gradually expanded into being programmed just for fun, or as
  209. a way for the programmer to show off.
  210.  
  211. You can find more expanded information on the history of demos at:
  212.  
  213.      http://www.cdrom.com/pub/demos/hornet/html/demo_history.html
  214.  
  215. Also See FAQ 9.3.
  216.  
  217. ---------------------------------------------------------------------------
  218.  
  219. (1.1) How/Where do I get a demo?
  220.  
  221. Many demos can be found on local BBSes, but if you have Internet access,
  222. you can easily get them off Internet sites. You need to have ftp access to
  223. a couple of ftp sites. Here are some listings:
  224.  
  225.    * ftp://ftp.hornet.org/pub/demos: A huge site in the U.S; home base of
  226.      the Hornet demogroup's demo archive, the largest in the world. Carries
  227.      diverse programs related to music, graphics, magazines, programming
  228.      info/source code, and, of course, demos. If you have access to a web
  229.      browser, do yourself a favor and visit Hornet's official web interface
  230.      to this archive, at http://www.hornet.org/pub/demos. Snowman has spent
  231.      months creating a custom search engine to the archive; you can search
  232.      for demo names, group names, ratings, parties, and more.
  233.  
  234. Some other sites are: (some of these are mirrors of ftp.hornet.org)
  235.  
  236.    * ftp://ftp.arosnet.se
  237.    * ftp://ftp.luth.se
  238.    * ftp://ftp.sun.ac.za
  239.    * ftp://ftp.telepac.pt
  240.    * ftp://ftp.uni-paderborn.de
  241.    * ftp://ftp.uwp.edu
  242.    * ftp://ftp2.mpoli.fi
  243.    * ftp://hagar.arts.kuleuven.ac.be
  244.    * ftp://wuarchive.wustl.edu
  245.  
  246. Demos are usually in a subdirectory similar to /demo, /demos, /pub/demos or
  247. /pub/msdos/demos.
  248.  
  249. If you don't have access to an FTP site directly, but you do have email,
  250. you can use FTP sites via email. See
  251. http://www.instantweb.com/~tech/topics/ftpmail.html for more information.
  252.  
  253. ---------------------------------------------------------------------------
  254.  
  255. (1.2) What are the best Demos?
  256.  
  257. Since demos are an art form, no single person is qualified to say which
  258. ones are the best. Since here are plenty available, you can choose. Here's
  259. a list of some of the most praised demos overall (the "classics", if you
  260. will), and are highly recommended to beginners to the demo scene:
  261.  
  262.        Name       Demogroup  Sound Blaster? Gravis Ultrasound?
  263.  Unreal          Future Crew       Yes        Yes, in v. 1.1
  264.  Panic           Future Crew       Yes              No
  265.  Second Reality  Future Crew       Yes             Yes
  266.  Crystal Dream I Triton            Yes              No
  267.  Crystal Dream IITriton            Yes             Yes
  268.  Show            Majic 12          No               No
  269.  Verses          EMF               Yes             Yes
  270.  Dope            Complex           No              Yes
  271.  Stars           Nooon             Yes             Yes
  272.  Caero           Plant & EMF       Yes             Yes
  273.  Inside          CNCD              Yes             Yes
  274.  Contrast        Oxygene           Yes             Yes
  275.  
  276. These are considered the "classics", and should be viewed to get a wide
  277. understanding of what goes into a demo. There are thousands more out there
  278. for you to view, of course.
  279.  
  280. These demos are available in the ftp sites listed in the above FAQ 1.1,
  281. "How/Where do I get a demo?". You can also grab them directly off of PC
  282. Demos Explained (see FAQ 3.2) on the World Wide Web.
  283.  
  284. For continuing reports on what people think is a good or bad demo, you can
  285. monitor what people say on the Internet (see FAQs 3.0-3.3). The semi-weekly
  286. newsletter DemoNews (see FAQ 3.3) also rates demos on a five-star system.
  287.  
  288. Another way to find good demos is to check the compo (competition) results
  289. from various Parties. The largest party is called The Party, held each year
  290. around Christmas. Another big party is Assembly, held in the summer and
  291. reputed to show the best demos. Here's the top three from each (as of
  292. November, 1996):
  293.  
  294.                                  The Party
  295.  
  296.                TP93 PCDemo                         TP93 PCIntro
  297.    1. Untitled by Dust
  298.    2. The Good, The Bad, and The Ugly     1. Cyboman by Gazebo
  299.       by S!P                              2. Symbology by Admire
  300.    3. Cardiac by Infiny                   3. Blackzone by Masque
  301.  
  302.                TP94 PCDemo                         TP94 PCIntro
  303.    1. Project Angel by Impact Studios     1. Cyboman 2 by Complex
  304.    2. No by Nooon                         2. Peripheral Vision by Valhalla
  305.    3. Contagion by The Coexistence        3. Finkel by Jamm
  306.  
  307.                TP95 PCDemo                         TP95 PCIntro
  308.    1. Caero by EMF & Plant                1. Lasse Reinbong by Cubic Team
  309.    2. Dream by Jamm                       2. Illumination by Yodel
  310.    3. Reanimator by Rage                  3. Sea Robot of Love by Orange
  311.  
  312.                               Assembly
  313.  
  314.             ASM93 PCDemo                     ASM93 PCIntro
  315.    1. Second Reality by Future Crew   1. Eclipse by EMF
  316.    2. Optic Nerve by Silents          2. Tangle by Epical
  317.    3. Elements by Xography            3. Debut by Darkzone
  318.  
  319.             ASM94 PCDemo                     ASM94 PCIntro
  320.    1. Verses by EMF                   1. AirFrame by Prime
  321.    2. Holistic by Cascada             2. Space Jam by Fascination
  322.    3. Heartquake by Iguana            3. Fyvush by Jamm
  323.  
  324.             ASM95 PCDemo                     ASM95 PCIntro
  325.    1. Stars by Nooon                  1. Drift by Wild Light
  326.    2. Juice by Psychic Link           2. Stickman's World by Coma
  327.    3. DX Project by RealTech          3. Bill G Force by Complex
  328.  
  329.             ASM96 PCDemo                     ASM96 PCIntro
  330.    1. Machines of Madness by Dubius   1. Blind by Eufrosyne
  331.    2. Toasted by Cubic Team           2. We Go by Complex
  332.    3. Vivid Experiment by Doomsday    3. Nation Zero 2 by Jamm
  333.  
  334. ---------------------------------------------------------------------------
  335.  
  336. (1.3) I can't get this Demo to run! What can I do?
  337.  
  338. First of all, the problem may be your operating system or environment. You
  339. can expect to have some problems if you are running:
  340.  
  341.    * Windows 3.1
  342.    * Windows 95
  343.    * OS/2
  344.  
  345. In the case of Windows 3.1, exit windows via Program Manager's File|Exit
  346. menu; if you're running Windows 95, shut down to "MS-DOS mode"; if you're
  347. running OS/2, try the demo in a full-screen session with "Vertical Retrace
  348. Emulation" turned OFF.
  349.  
  350. If that doesn't work and you're not running actual DOS, then you must
  351. reboot your machine and boot DOS 3.3 or later. For instance, you cannot
  352. expect demos to run under:
  353.  
  354.    * Windows NT
  355.    * SoftPC (Macintosh MS-DOS emulator)
  356.  
  357. This is because demos sometimes rely on hardware tricks to achieve their
  358. effects, and these operating systems do not allow direct access to the
  359. hardware. In fact, these operating systems must emulate DOS, so the demos,
  360. if they did run, would run twice as slow anyway. If you boot actual DOS and
  361. it still won't run, you might be hitting the old Protected Mode issue: Many
  362. complicated demos (high-speed specialized graphics, for instance) usually
  363. work best when they take over the entire machines' hardware. This can
  364. complicate running the demo on different machines ("It worked on my
  365. friend's machine, why not mine?" and so on). Furthermore, since a couple of
  366. years ago, demo programmers started to use more and more of their own
  367. protected mode programming routines instead of using the ones already
  368. running on the system. So usually, if you have QEMM386, 386MAX, or EMM386
  369. installed (protected mode memory managers), those demos would not run.
  370. (This does not mean all demos won't run on today's memory managers--all
  371. Future Crew demos, for instance, run just fine.)
  372.  
  373. So, the solution is to boot your machine without a protected-mode memory
  374. manager. Personally, we suggest you do a clean boot by hitting F5 when you
  375. see the message "Starting MS-DOS" (or F8 if you're running Windows 95), or
  376. to make a multiple config menu system that includes a "bare-bones"
  377. config.sys and autoexec.bat configuration.
  378.  
  379. Here's what a "bare-bones" configuration looks like:
  380.  
  381. Your CONFIG.SYS should look like:
  382.  
  383.      DEVICE=C:\DOS\HIMEM.SYS
  384.      REM Some programs require HIMEM in conjunction with their custom
  385.      REM protected mode memory managers
  386.  
  387. Your AUTOEXEC.BAT should look like:
  388.  
  389.      SET BLASTER=A220 I5 D1 H5 T6
  390.      REM if you have a Sound Blaster sound card; make sure you use the
  391.      REM right settings, the above is an example
  392.  
  393.      SET ULTRASND=240,7,6,7,5
  394.      REM if you have a Gravis Ultrasound card; make sure you use the
  395.      REM right settings, the above is an example
  396.  
  397.      C:\ULTRASND\ULTRINIT
  398.      REM if you have a Gravis Ultrasound card
  399.  
  400. ...and any other sound card initialization programs. (These will depend on
  401. your sound card, of course.)
  402.  
  403. That's it--nothing else. Try running the demo; with nothing in its way, it
  404. should work.
  405.  
  406. If you absolutely must have some other programs in your CONFIG.SYS or
  407. AUTOEXEC.BAT in order for your computer to run, then try having them take
  408. up as little memory as possible, if they provide the option.
  409.  
  410. Note: Some programs need EMS to run. For that, you need a memory manager.
  411. To do this, add this line after the "HIMEM.SYS" line in the above
  412. CONFIG.SYS example:
  413.  
  414.      DEVICE=C:\DOS\EMM386.EXE RAM
  415.  
  416. Also, a demo might complain about not having enough free DOS memory. To fix
  417. that, add this line after the "HIMEM.SYS" line in the above CONFIG.SYS
  418. example:
  419.  
  420.      DOS=HIGH
  421.  
  422. ---------------------------------------------------------------------------
  423.  
  424. (1.3.1) What's the best PC system to run a demo?
  425.  
  426. Ironically, a slower system used to be better for appreciating demos,
  427. because you can really see how good the code is. One of the great things
  428. about the early demo scene was how 3D shaded objects were displayed at 60
  429. or 70 frames per second--on a 16 MHz machine. You just couldn't ignore how
  430. excellent the code was.
  431.  
  432. Nowadays, the best machine for appreciating demos is probably a Pentium 90.
  433. It's slow enough so that you can appreciate the coding, but fast enough so
  434. that the newer generation of demos won't be laboriously slow.
  435.  
  436. If compatibility is an issue, then get a video board based on the Tseng
  437. Labs ET4000, Cirrus Logic or S3 chipset. FAQ 5.0 has information on the
  438. fastest video boards.
  439.  
  440. If you want to appreciate the sound, one of the Gravis Ultrasound family of
  441. cards (see FAQ 4.0) is required, as over 90% of all demos support it, and
  442. many only support it. (As to why many only support it, see FAQ's 4.1 to
  443. 4.3.)
  444.  
  445. When it comes to RAM, the more the better. :-) But 8 MB should probably be
  446. your minimum.
  447.  
  448. ---------------------------------------------------------------------------
  449. How to Create Demos:
  450. ---------------------------------------------------------------------------
  451.  
  452. (2.0) What Compilers do I use?
  453.  
  454. In order to make a demo, you need to know how to program.
  455. (Self-explanatory, I guess, but we still needed to address it. :-) You need
  456. to know a common language that lends itself to programming DOS programs,
  457. like Assembler, Pascal, or C/C++.
  458.  
  459. Some assemblers are:
  460.  
  461.    * Turbo Assembler 3.1 or above ("TASM")
  462.    * Microsoft Assembler ("MASM")
  463.  
  464. Some C/C++ compilers are:
  465.  
  466.    * Watcom C++ 10.x, 11.x
  467.    * Borland C++ 3.1, 4.0, 4.5
  468.    * Visual C++
  469.    * Turbo C/C++
  470.    * GNU C for DOS (this is a FREE 32-bit C compiler! You can get it at
  471.      ftp://ftp.idsoftware.com/djgpp/v2 or
  472.      http://www.rt66.com/~brennan/djgpp/
  473.  
  474. Some pascal compilers are:
  475.  
  476.    * Turbo Pascal 6.0 or 7.0
  477.    * Borland Pascal 7.0
  478.  
  479. ---------------------------------------------------------------------------
  480.  
  481. (2.1) Are there any programming references I can read?
  482.  
  483. For demos specifically? Only one, but if you get at least one book, get
  484. Michael Abrash's Zen of Graphics Programming, 2nd Edition, published by The
  485. Coriolis Group (ISBN 1-883577-89-6). It's about $44.99 in the USA and comes
  486. with Zen of Assembler in electronic form on the included CDROM. It covers
  487. everything from low-level VGA hardware programming, to fast animation
  488. techniques, to 3-D algorithms, BSP trees, and Quake. As many democoders
  489. would agree, this is this shit. :-) We all wish we had access to this book
  490. six years ago, but of course back then, all of us were discovering these
  491. techniques at the same time.
  492.  
  493. Here's some more suggestions:
  494.  
  495. ASSEMBLER:
  496.  
  497.    * Assembly Language for the IBM-PC 2nd Edition, by KIP R. IRVINE
  498.    * Mastering Turbo Assembler by Tom Swan (Hayden Books, ISBN
  499.      0-672-48435-8).
  500.    * PC System programming, Abacus 1990, by Michael Tischer
  501.    * Zen of Code Optimization, by Michael Abrash
  502.  
  503. C/C++:
  504.  
  505.    * Programming in C, Third Edition Kelley/POHL
  506.  
  507. VGA:
  508.  
  509.    * EGA / VGA a programmer's reference guide, 2nd edition, Bradley Dyck
  510.      Kliewer
  511.    * Programmers guide to EGA and VGA cards, 3rd Edition, Addison Wesley,
  512.      by Richard Ferraro
  513.  
  514. Graphics:
  515.  
  516.    * Computer Graphics: Principles and practice, 2nd edition, Foley, Van
  517.      dam, Feiner, Hughes
  518.    * The "Graphics Gems" series, currently volumes 1 through 5 (first one
  519.      edited by Glassner). These books are full of useful tricks and
  520.      algorithms, for all types of graphics related stuff from 3D to image
  521.      processing
  522.  
  523. Demo Programming:
  524.  
  525.    * PC INTERDIT (French version), PC Underground (English version) by
  526.      Boris Bertelsons and Mathias Rasch from Micro Application/Abacus/Data
  527.      Becker
  528.  
  529. Magazines:
  530.  
  531.    * Dr. Dobb's Journal
  532.    * Game Developer
  533.    * PC Techniques
  534.    * You can also consult The Programmers' Booklist, which is a list of
  535.      books, magazines, emags, digital sources, WWW pages, etc. of
  536.      programming resources. This can be found at
  537.      http://intranet.ca/~sshah/booklist.html and
  538.      ftp://ftp.intranet.ca/usr/synapsis/progbook.lst
  539.  
  540. ---------------------------------------------------------------------------
  541.  
  542. (2.2) Where can I find some example Source Code?
  543.  
  544. You can find plenty of source code for graphic effects, sound routines, and
  545. other examples in the following ftp sites:
  546.  
  547.    * ftp://ftp.hornet.org/pub/demos/code -- Included are subdirectories
  548.      which are categorized depending on the nature of the effects. Most of
  549.      the interesting stuff is under graph and demosrc.
  550.    * ftp://x2ftp.oulu.fi/pub/msdos/programming -- Same as above, but
  551.      different subdirectories, of course. Also a fantastic wealth of
  552.      programming information.
  553.    * ftp://ftp.co.iup.edu/code -- This is a mirror of the Hornet Archive's
  554.      /code directory.
  555.  
  556. As for CDROM's, the Nightowl CDROM series, Software Vault CD's & Emerald
  557. CD's have been suggested as a source of source code.
  558.  
  559. ---------------------------------------------------------------------------
  560.  
  561. (2.2.1) I'm no idiot--Where can I find some REAL programming info?!
  562.  
  563. Okay, okay--you don't have to yell. :-) The stuff listed above is fairly
  564. complete, but some readers of this FAQ have suggested some other things to
  565. look at if you didn't know about them:
  566.  
  567.    * Hardware descriptions of different hardware, like Intel processor
  568.      optimizations, are at http://www.intel.com/IAL/processr/ap500ovr.html
  569.    * "Real-time" methods of Phong shading can be found at
  570.      ftp://ftp.hornet.org/pub/demos/code/graph/phong
  571.    * Graphics algorithms can be found in the usenet newsgroup
  572.      comp.graphics.algorithms and in their FAQ.
  573.    * The PC Games Programmers Encyclopedia has lots of juicy tricks, and
  574.      can be found at
  575.      ftp://x2ftp.oulu.fi/pub/msdos/programming/gpe/pcqpe10.zip
  576.    * Mode X programming information and libraries can be found at
  577.      ftp://x2ftp.oulu.fi/pub/msdos/programming/xlib
  578.    * The PC Games Programing Encyclopedia is a good collection of documents
  579.      on VGA programming, as well as other issues of game and demo
  580.      programming. There are two versions available:
  581.         o DOS executable version:
  582.           ftp://x2ftp.oulu.fi/pub/msdos/programming/gpe/pcgpe10.zip
  583.         o Windows Help format version:
  584.           ftp://x2ftp.oulu.fi/pub/msdos/programming/gpe/wpcgpe10.zip
  585.  
  586. There are also many other technical documents on the Internet, including:
  587.  
  588.    * DOSREF34.ZIP : Programmer's technical reference DOS by Dave Williams
  589.    * INTDOS44.ZIP : MSDOS Interrupt List by Ralph Brown
  590.    * HELPPC21.ZIP : Help PC by David Jurgens
  591.  
  592. ---------------------------------------------------------------------------
  593.  
  594. (2.3) Where can I find some painting programs?
  595.  
  596. Most demo coders use DeluxePaint ][e by Electronic Arts. This program is
  597. out of print for the IBM, but you can find it in some bargain bins or you
  598. can purchase it directly from Electronic Arts. It is also rumored that if
  599. you have the original Rebel Assult CDROM (a game made by LucasArts), there
  600. is a hidden directory with some development tools used for the game, and
  601. DeluxePaint is among them. :-) If you own an Amiga, you can easily purchase
  602. Deluxe Paint IV for the Amiga and use that (although many argue that
  603. Brilliance is a better product).
  604.  
  605. Another set of DOS users argue that Animator PRO 1.3a by Autodesk is the
  606. best bitmap illustration program to use. For photographic bitmap editing,
  607. Adobe Photoshop is easily one of the best programs; for "natural bitmap"
  608. creation, Fractal Design Painter is the best.
  609.  
  610. There is a freeware program called Satan Paint, which is by the same guys
  611. as Abuse (cool shareware game) - you might find it at
  612. ftp://ftp.hornet.org/pub/games/abuse.
  613.  
  614. There are some good shareware painting programs as well, such as Paint Shop
  615. Pro 3.11 for Windows, and Neopaint for DOS. You can find them at:
  616.  
  617.    * Paint Shop Pro:
  618.      ftp://ftp.cica.indiana.edu/pub/pc/win3/desktop/psp30.zip
  619.    * Neopaint: ftp://x2ftp.oulu.fi
  620.  
  621. GD / Hornet also added: "There's a new MSDOS paint program on hornet called
  622. "Grafx 2"... I have heard people talking about it on #trax. If you want to
  623. check it out, I believe the filename to search for is "gfx2b".. then the
  624. rest of the filename is the exact version number."
  625.  
  626. ---------------------------------------------------------------------------
  627.  
  628. (2.4) Where are some music composition programs? Which one should I use?
  629.  
  630. For music, most demo groups use "music modules", a format that originated
  631. on the Amiga. MODS vary greatly in formats on the PC, however; the standard
  632. formats right now are S3M, IT, and XMs; some older formats still being used
  633. are MOD and MTM.
  634.  
  635. In order to create a module, you need a program called a "Tracker". The
  636. best ones so far are:
  637.  
  638.                 Name                        Loads:         Saves:
  639.  Fast Tracker II v.2.06 by Triton   MOD, XM, S3M          XM
  640.  Scream Tracker v3.21 by Future CrewMOD, S3M, STM         MOD,S3M
  641.  MultiTracker v1.01 by Renaissance  669, MOD, MTM         MTM
  642.  Impulse Tracker v2.10 by Pulse     MOD, S3M, IT, MTM, XM S3M, IT
  643.  Velvet Studio by Velvet            MOD, S3M, AMS, XM     AMS, XM
  644.  
  645. You can find these trackers in
  646. ftp://ftp.hornet.org/pub/demos/music/programs/trackers
  647.  
  648. Notes:
  649.  
  650.    * FastTracker, MultiTracker, Impulse Tracker, and Scream Tracker are
  651.      fully functional trackers, with the following exceptions:
  652.         o FastTracker is shareware
  653.         o The author of IT will send you a disk writer device driver if you
  654.           contribute some money to the Impulse Tracker project.
  655.    * Velvet Studio is crippleware; when you purchase it, you get full
  656.      functionality.
  657.    * IT is the only tracker as of 1/1/1997 that natively supports the extra
  658.      quality of Interwave cards, like the GUS PnP.
  659.  
  660. Now, as to which one you should use, that depends completely on why you're
  661. composing music in the first place. If you're just composing for fun, then
  662. use any tracker you feel comfotable with. If you want the most flexibility,
  663. you should probably use either Impulse Tracker or FastTracker II, since
  664. they have a ton of options; FT2 also has a built-in sampler and sample
  665. editor, just like the good old Amiga days. If you're composing music for a
  666. demo, however, then always make sure you're using a tracker that your coder
  667. can support. You're always safe with Scream Tracker 3, since the .s3m file
  668. format is the 2nd-most supported format for players (MOD being the first).
  669. Also, ST3 has an Amiga MOD editing mode, so you can compose proper MOD
  670. format songs in that tracker as well.
  671.  
  672. For more info on the different types of PC MOD formats, check out PC Demos
  673. Explained--specifically, at this URL:
  674.  
  675.      http://www.cdrom.com/pub/demos/hornet/html/demo_reference.html
  676.  
  677. ---------------------------------------------------------------------------
  678.  
  679. (2.4.1) How can I play music modules from my own code?
  680.  
  681. There are several libraries for playing music on several demo sites. One
  682. place to get them is ftp://ftp.hornet.org/pub/demos/code/sound; in there,
  683. you'll find many libraries, including:
  684.  
  685.           Name             Filename       Formats            Language
  686.  
  687.  MIDAS v0.40             mdss*.zip    Most formats,    Assembler, Pascal,
  688.                                       except XM        C
  689.  MIDAS v0.5x             mdss*.zip    Most formats     C
  690.  Mikmod v2.xx            mik*.arj     Most formats     C
  691.  Bells, Whistles, and                 Most formats,    Assembler, Pascal,
  692.  Sound Boards v.1.2x     bwsb*.zip    except XM        C, BASIC
  693.  
  694.  CapaMOD v3.xx           cmod3*.zip   MOD, S3M, XM     Assembler, Pascal,
  695.                                                        C
  696.  FMODDOC2 by FireLight   fmoddoc2.zip Most formats     C
  697.  
  698. Any of the above libraries are more than enough to play modules on the GUS,
  699. and some of them support many other sound cards (such as Sound
  700. Blaster/Pro/16, Pro Audio Spectrum/+/16, etc.). FMODDOC2 contains fantastic
  701. and complete information on file structures, period values, information,
  702. etc. It's highly recommended if you want to write your own player.
  703.  
  704. (Note that these libraries are for playing MODs or MOD-related formats, and
  705. do not play MIDI music. For that, you could try the widely available Miles
  706. Drivers; or, if you only have a GUS, you could use UltraMID or the GUS SDK.
  707. See the GUS FAQ for more info.)
  708.  
  709. ---------------------------------------------------------------------------
  710. Demos and the Internet:
  711. ---------------------------------------------------------------------------
  712.  
  713. (3.0) Is there a place on the Internet I can learn more about demos?
  714.  
  715. There are several, actually:
  716.  
  717.    * For files or information: ftp://ftp.hornet.org/pub/demos
  718.    * For discussions or news, you have two choices, Usenet and IRC:
  719.         o IRC: #coders (programming talk) or #trax (music talk)
  720.         o Usenet: comp.sys.ibm.pc.demos
  721.    * For General Info on the WWW, you can always try:
  722.      http://www.cdrom.com/pub/demos/hornet/html/demos.html
  723.  
  724. (Note: Although this newsgroup has "demos" on the end of it, it does not
  725. talk about subjects such as game demos. For those, look in the newsgroup
  726. series comp.sys.ibmpc.games.*)
  727.  
  728. comp.sys.ibm.pc.demos is a nice place to ask questions about demos in
  729. general, so if you have any general questions concerning demos, ask here
  730. first. As such, we'll talk about comp.sys.ibm.pc.demos first, then IRC and
  731. the WWW later in this document.
  732.  
  733. ---------------------------------------------------------------------------
  734.  
  735. (3.0.1) What can I talk about on comp.sys.ibm.pc.demos?
  736.  
  737. People post various things. Some concerning Demos, others about technical
  738. questions, such as:
  739.  
  740.    * "How do I code Gouraud Shading?"
  741.    * "How do I code Plasma/Copper bars, etc.?"
  742.    * "Does anyone know how to contact xxx?"
  743.    * "What did you think of demo xxx?"
  744.    * "Where is the next party being held in Germany?"
  745.  
  746. Other misc. postings are about new programs coming out. For example, if you
  747. coded a demo or made some of your source code public, let us know about it
  748. here. Essentially, if it's demo-related, post. :-)
  749.  
  750. ---------------------------------------------------------------------------
  751.  
  752. (3.0.2) What can I *NOT* talk about on comp.sys.ibm.pc.demos?
  753.  
  754. Some posts come up so frequently that many of the members of the newsgroup
  755. are getting tired of hearing them. Here's a list of subjects to avoid:
  756.  
  757.       Subject                 Why you should avoid posting this
  758.  "GUS is better
  759.  than SB!"
  760.                    These arguments should be posted on a sound card group
  761.  "SB is better     like comp.sys.ibm.pc.soundcards.advocacy, not here.
  762.  than GUS!"
  763.  
  764.  "What's the
  765.  fastest           This is asked way too many times. (It is covered in
  766.  PutPixel?"        this FAQ as question 10.0, BTW)
  767.  "mY dEm0 t0TalLy  "Elite" postings are usually the mark of a "lamer", and
  768.  rUleZ!"           are ignored.
  769.  
  770.  "PC SUCKS!"       Usually, these are posted by people who have left their
  771.                    terminal unattended :-), or by Amiga/Atari advocates.
  772.  "mydemo.zip, part Do not post binaries in comp.sys.ibm.pc.demos! Post
  773.  1 of 23"          them in alt.binaries.demo-scene.ibm-pc instead.
  774.  
  775. These kinds of posts usually bring lots of replies--and they're not
  776. friendly ones!
  777.  
  778. Also, comp.sys.ibm.pc.demos is NOT a binary newsgroup! Many people in
  779. third-world or poor countries get this newsgroup the only way they can--
  780. delivered directly to their home computer. A binary file in
  781. comp.sys.ibm.pc.demos can easily cost them a lot of money! So, please do
  782. not post any binaries. If you want to post a binary, please do so in
  783. alt.binaries.demo-scene.ibm-pc instead. If you want to upload a binary file
  784. where many other demo people can get at it, look in the above section about
  785. ftp sites--you can upload there as well, usually in /incoming directories,
  786. like ftp://ftp.hornet.org/pub/demos/incoming/demos
  787.  
  788. ---------------------------------------------------------------------------
  789.  
  790. (3.0.3) I'm new at this... How can I post a message without sounding like a
  791. total fool?
  792.  
  793.    * Be yourself.
  794.    * Use common sense; sometimes a reply to the original sender would be
  795.      much better than posting it into comp.sys.ibm.pc.demos if there's
  796.      already a ton of replies.
  797.    * Flaming (sending mean messages to) other people will get you nowhere.
  798.    * Avoid long signature files.
  799.  
  800. Another good practice to follow when posting is to edit the original
  801. message and answer appropriately; i.e. don't just reply back with all the
  802. text of the previous senders already shown. It is usually a hassle to go
  803. through 5 pages of old replies, and then 1 sentence of answer.
  804.  
  805. ---------------------------------------------------------------------------
  806.  
  807. (3.0.4) Can I erase my old postings?
  808.  
  809. ONLY IF YOUR NEWSREADER PROVIDES THE OPTION TO DELETE POSTS. Otherwise, you
  810. can't. Once you've posted something, it is posted to every newsgroup it was
  811. bound for, and some people may see it before you cancel it. So, think
  812. before posting a message. If you post something that you realize was a
  813. mistake, cancel it (if you can) and post another one, right away, and write
  814. in it what you really meant. That usually stops people answering another 50
  815. messages to the (incorrect) original.
  816.  
  817. ---------------------------------------------------------------------------
  818.  
  819. (3.1) What's IRC? Are there any IRC channels established for demos?
  820.  
  821. IRC stands for Internet Relay chat. You can find more info about it in
  822. newsgroups such as alt.irc, etc. With IRC, you can enter "channels" (like a
  823. CB Radio) and discuss things with people located all around the world in
  824. real time. It is a good place to stop by and ask questions.
  825.  
  826. As of this writing, the main two channels concerning demos are:
  827.  
  828.    * #coders - Concerning PC Demo coders
  829.    * #trax - Concerning PC Music Makers
  830.  
  831. Note: #trax moved to Anothernet, so if you join #trax and nobody is there,
  832. type "/server neato.org" or the name of another Anothernet server, like
  833. irc.phonet.com, and then try again. AnotherNet has a home page that you can
  834. check out if you want more info, at http://www.another.net. Also, #trax has
  835. it's own home page, at http://www.spaz.com/trax
  836.  
  837. There are other channels dedicated to demos and democoding:
  838.  
  839.    * #daskmig - Lots of chat about demos
  840.    * #nlcoders - The Dutch and Belgian scene
  841.    * #demofr - French chats about demos
  842.    * #codersnl - Dutch chats about democoding
  843.    * #amigascne - Amiga demoscene chat
  844.    * #suomiscene - Finnish demoscene chat
  845.  
  846. The above channels are on the Euro-Efnet. A good USA server for the
  847. EuroEfnet is irc.stealth.net
  848.  
  849. Also, lots of groups have their own channel while they're online, like
  850. #massive and #natives. Finally, some parties have their own channel during
  851. the party, like #asm95, #naid, etc. Feel free to join at any time... it is
  852. fun, and fairly addicting!
  853.  
  854. For those of you who have been having problems connecting to AnotherNet
  855. (the IRC network that #trax has moved to and #coders is trying to move to)
  856. recently, I finally managed to get my hands on the little script that fixes
  857. the problem.
  858.  
  859. Here's what to do:
  860.  
  861.   1. Start your IRC client (this script is written for ircII).
  862.   2. Load the script.
  863.   3. Connect to the server.
  864.  
  865. Here's the script:
  866.  
  867.      # Script to fix irc to work with AnotherNet "initping".
  868.      on ^raw_irc "PING :%" {quote PONG $1-}
  869.      on ^raw_irc "% PING :%" {quote PONG $2-}
  870.  
  871. Just take those 3 lines, and save them as "initping.irc" ... and add a line
  872. to your .ircrc file. Should work perfectly then.
  873.  
  874. ---------------------------------------------------------------------------
  875.  
  876. (3.2) What's the World Wide Web (WWW)? Are there any places to learn about
  877. demos on the WWW?
  878.  
  879. Created by university professors in CERN (Switzerland), WWW is a network of
  880. hypertext documents that can connect to other hypertext documents.
  881. Accessible by WWW "browsers", such as Mosaic and Netscape, it allows you to
  882. connect to WWW pages, where you can read articles, look at pictures,
  883. download files, etc. In short, if you haven't tried the WWW yet, you're
  884. missing a whole new aspect of the Internet.
  885.  
  886. If you're looking for a browser, try one of these three:
  887.  
  888.    * Mosaic, the original WWW browser, can be found in
  889.      ftp://ftp.ncsa.uiuc.edu and exists for Windows, Mac and Unix.
  890.    * Netscape, a very nice browser that supports additional layout
  891.      commands, is available in ftp://ftp.netscape.com
  892.    * Lynx is a text-mode browser that you can use on any terminal.
  893.  
  894. Many demo groups in the demo scene have their own WWW home pages. It would
  895. be too long here to list all of them, however Trixter has a homepage which
  896. explains about PC demos and lists many demo resources. You can access this
  897. page at:
  898.  
  899.      http://www.cdrom.com/pub/demos/hornet/html/demos.html
  900.  
  901. ---------------------------------------------------------------------------
  902.  
  903. (3.3) Are there any newsletters about demos?
  904.  
  905. Other than the irregularly-released diskmags (see FAQ 6.0), there are two
  906. semi-weekly newsletters produced for the demo scene: DemoNews and
  907. TraxWeekly.
  908.  
  909. DemoNews is both a list of new files uploaded to ftp.hornet.org (Hornet's
  910. home base and the largest demo site on the Internet), news, interviews, and
  911. articles that pertain to the demo scene. DemoNews was started by Dan Wright
  912. (Pallbearer / Toxic Zombies & Hornet) and is continued by the Hornet
  913. demogroup.
  914.  
  915. TraxWeekly is similar to DemoNews, but is dedicated to the music scene.
  916. It's called "TraxWeekly" because it stemmed from the IRC channel #trax (see
  917. FAQ 3.1).
  918.  
  919. Here's how you can subscribe to either magazine (the following is an
  920. excerpt from TraxWeekly):
  921.  
  922.  _____How to subscribe to TraxWeekly
  923.  
  924.  TraxWeekly subscriptions are free, and can be requested in this
  925.  matter:
  926.  
  927.  Send mail to:                listserver@unseen.aztec.co.za
  928.  And put in the message body: subscribe trax-weekly [your real name]
  929.  
  930.  If you want to unsubscribe to the list, mail the same address and write:
  931.  
  932.                               unsubscribe trax-weekly
  933.  
  934.  TraxWeekly is also available on ftp.hornet.org:
  935.  
  936.  /pub/demos/incoming/info/  for the most recently uploaded version, or
  937.  /pub/demos/info/traxw/     for all of the back issues.
  938.  
  939. DemoNews is published approximately once a week, and can be emailed
  940. directly to you. According to each issue of DemoNews, here's how you can
  941. subscribe:
  942.  
  943.  _____How to subscribe to DemoNews
  944.  
  945.  Mail to : listserver@unseen.aztec.co.za
  946.  Body    : subscribe demuan-list [first_name] [last_name]
  947.  
  948.  The listserver will send DemoNews to your e-mail's return address.
  949.  
  950.  _____Back Issues
  951.  
  952.  Older issues of DemoNews can be located under /pub/demos/info/demonews.
  953.  Newly released issues of DemoNews are posted to /pub/demos/incoming/info.
  954.  
  955. Finally, someone pointed out that I didn't mention the RAW mag on-line.
  956. This is because I don't have information on it; I expect you can search the
  957. World Wide Web for it.
  958.  
  959. ---------------------------------------------------------------------------
  960.  
  961. (3.4) How can I contact demo people?
  962.  
  963. The easiest way to contact a demo person is to email them; it costs the
  964. both of you little money, and avoids huge time differences. If you can't
  965. find a person's email address, then you can try finding them on IRC (see
  966. FAQ 3.1), posting a message looking for them on comp.sys.ibm.pc.demos (see
  967. FAQ 3.0), or checking the "demo contact list" that is maintained by
  968. SCouT/SuccesS, at http://utopia.knoware.nl/users/rolando. Snowman also
  969. maintains a list at http://www.hornet.org/ha/pages/email.cgml. There was an
  970. older list that was maintained by rob@span.com, although it is at least 18
  971. months out of date.
  972.  
  973. ---------------------------------------------------------------------------
  974.  
  975. (3.5) Are there any Demo BBS's on the Internet?
  976.  
  977. There used to be a great one called Digital Horizons at dragon.axs.net that
  978. has since gone down. The only other two I know is BlueWater at
  979. http://www.Bluewater.ch and LooK BBS at
  980. http://www.geocities.com/siliconvalley/Heights/8481/.
  981.  
  982. ---------------------------------------------------------------------------
  983. Sound Questions:
  984. ---------------------------------------------------------------------------
  985.  
  986. (4.0) What are the different types of GUS sound cards?
  987.  
  988. There are four currently available, and their major differences are mostly
  989. in their recording abilities:
  990.  
  991.          Card                 Record               Playback
  992.  Gravis Ultrasound    44.1KHz, 8-bit stereo 44.1KHz, 16-bit stereo
  993.  Gravis Ultrasound MAX48KHz, 16-bit stereo  48KHz, 16-bit stereo
  994.  Gravis Ultrasound ACE(cannot record)       44.1KHz, 16-bit stereo
  995.  Gravis Ultrasound PnP48KHz, 16-bit stereo  48KHz, 16-bit stereo
  996.  
  997. The Gravis Ultrasound is not manufactured anymore, but you can still order
  998. it from many places for cheap, like around $50 or so. The MAX retails for
  999. about $179 US, and the ACE retails for about $99 US. Street (actual) prices
  1000. are usually 20% to 40% lower than retail prices in the US.
  1001.  
  1002. The Gravis PnP is a Plug-and-Play card mainly designed for Plug-and-Play
  1003. operating systems, like Windows 95, but it will work with non Plug-and-Play
  1004. operating systems as well. For programs that don't support it directly, it
  1005. acts just like a normal GUS if RAM is added to it. The PnP has no RAM on it
  1006. (but has the expansion capability), and the PnP Pro has 512K RAM. Also,
  1007. unlike the previous GUS cards, the PnP is based on the Interwave sound chip
  1008. from AMD, and has General MIDI capability built into the card. With RAM
  1009. added, you can also load General MIDI instruments off of disk, just like
  1010. the old GUS cards. The PnP also overcomes some of the previous GUS
  1011. limitations, like 1MB of RAM (you can have up to 8 MB) and the quality
  1012. drop-off after 14 channels (there is no drop-off at all if used in native
  1013. Interwave mode). Finally, the GUS PnP is more Sound Blaster-compatible than
  1014. previous GUS cards.
  1015.  
  1016. The PnP retails for $179.
  1017.  
  1018. ---------------------------------------------------------------------------
  1019.  
  1020. (4.1) Why is the Gravis Ultrasound (GUS) sound card supported more than the
  1021. Sound Blaster in demos?
  1022.  
  1023. Several reasons:
  1024.  
  1025.    * The GUS sounds much better than the Sound Blaster because it can play
  1026.      back 32 channels of stereo digitized sound at once, while the Sound
  1027.      Blaster Pro/16 series can only play back 2 channels.
  1028.    * Because the GUS can play back multiple channels, there is no need for
  1029.      mixing several channels into one (like playing MODs on the Sound
  1030.      Blaster series), so much less CPU time is utilized for playing music.
  1031.      This means more CPU time is available for graphical effects,
  1032.      calculation, etc.
  1033.    * Some demo coders consider the GUS easier to program.
  1034.    * The software development kit for the GUS was available for free as
  1035.      early as 1994 (and Renaissance's UltraDox was available before that)
  1036.      and contained lots of helpful source code. The Sound Blaster SDKs, by
  1037.      comparison, have either cost money, or provided binary libraries
  1038.      without any useful source code.
  1039.    * Many demo scene members have gotten free GUS cards in exchange for
  1040.      programming demos/games/utilities that specifically use the GUS.
  1041.  
  1042. ---------------------------------------------------------------------------
  1043.  
  1044. (4.2) Why is the Gravis Ultrasound sound card supported more than General
  1045. MIDI?
  1046.  
  1047. While General MIDI has much higher sound quality instruments, the number of
  1048. instruments (and the instruments themselves) are fixed in nature; that is,
  1049. you cannot change any of them. (If you don't like the sound of a particular
  1050. piano instrument, for example, you're stuck with it.) MODs, and MOD-like
  1051. formats (see FAQ 2.4) allow the composer to use whatever instruments he
  1052. feels like.
  1053.  
  1054. Also, General MIDI boards differ greatly in price and sound/instrument
  1055. quality, and a song on one GMIDI board might not sound the same on another.
  1056.  
  1057. Finally, General MIDI boards usually cost over $200 for a good quality
  1058. one--which is usually unattainable, given the budget of most demo scene
  1059. members.
  1060.  
  1061. ---------------------------------------------------------------------------
  1062.  
  1063. (4.3) Has MIDI been used in any demos?
  1064.  
  1065. Believe it or not, it has. Superunknown by Five And Then Some (TG '94) used
  1066. MIDI files and custom GUS patches for their music (the demo requires a GUS
  1067. to hear the music properly, however; the demo will not play the music on a
  1068. GMIDI board). And The Phony Coders only supported the Roland MT-32 in their
  1069. demos. As for FM synthesis, it's used in a lot of places, but it's neither
  1070. MIDI, nor composed in a MIDI sequencer; there are custom FM trackers for
  1071. that.
  1072.  
  1073. ---------------------------------------------------------------------------
  1074.  
  1075. (4.4) Why is the Gravis Ultrasound sound card supported more than the Sound
  1076. Blaster AWE32?
  1077.  
  1078. Even though the SB Awe32 is very similar (and in some ways, superior) to
  1079. the GUS, it is not being accepted well by the demo community, mainly
  1080. because for a long time low-level information about the card was not
  1081. available for free. Also, up until recently, the SB AWE32 cost almost 50%
  1082. more than the GUS (this has changed, however). But since the GUS was around
  1083. over 3 years more than the SB AWE32, the GUS has much more "market
  1084. saturation" and existing free source code. (Although, to be fair,
  1085. Renaissance originally disabled the drivers to find out what was going on,
  1086. and Gravis took the hint and released a development kit.)
  1087.  
  1088. Some coders have reverse-engineered the drivers and come up with C source
  1089. code than can not only drive the SB AWE32, but play MODs and XMs on it,
  1090. even with echo, chorus, and reverb effects. To find this info, visit
  1091. ftp://ftp.hornet.org/pub/demos/code/sound. There are also some trackers
  1092. that support the AWE32: The Ultimate Tracker and RamTrack. You can find
  1093. these from ftp://ftp.lysator.liu.se and other sites.
  1094.  
  1095. ---------------------------------------------------------------------------
  1096.  
  1097. (4.5) Can I emulate the GUS with my Sound Blaster?
  1098.  
  1099. No. The GUS performs so many functions over the Sound Blaster that writing
  1100. an emulator would be extremely difficult. Couple this information with the
  1101. fact that many demos take over the hardware entirely, and you realize it
  1102. makes writing an emulator impossible.
  1103.  
  1104. Well, that's not entirely true. It IS possible with DPMI and IO permission
  1105. bitmaps. It shouldn't take up more than 20% CPU time on a Pentium [for
  1106. 32-channels at 44kHz], but most people would consider this unacceptable.
  1107.  
  1108. Of course, a hardware emulator for the GUS exists. :-) It's called the GUS
  1109. ACE (see FAQ 4.0), and was designed to co-exist with your existing sound
  1110. card. They're only about $80 in the US.
  1111.  
  1112. ---------------------------------------------------------------------------
  1113.  
  1114. (4.6) Why does my Sound Blaster 16 not output stereo with demos?
  1115.  
  1116. If the demo supports the SB16 directly, you usually get stereo and have no
  1117. problems at all. The lack of stereo usually happens when the demo supports
  1118. the SBPro only, and it's not the demo's fault, it's Creative Lab's (the
  1119. manufacturer of the Sound Blaster series). The SBPro had two DAC's for each
  1120. channel, with a bit on the on-board filter controlling if the output of
  1121. those DACs was mixed into stereo or mono. The SB16's mixer does not
  1122. acknowledge this stereo/mono filter bit--it just doesn't exist on its
  1123. circuitry. So you get mono sound.
  1124.  
  1125. This phenominon is usually only present with older demos that support
  1126. SB/SBPro only.
  1127.  
  1128. ---------------------------------------------------------------------------
  1129. Graphics Questions:
  1130. ---------------------------------------------------------------------------
  1131.  
  1132. (5.0) Which video card is best for viewing demos?
  1133.  
  1134. The nature of demo programmers dictates that they program the coolest stuff
  1135. with the crappiest hardware. In other words, most (if not all) demos
  1136. require a register-compatible VGA card. For the best experience, you need
  1137. as fast a video card as possible, because most video cards are the main
  1138. bottleneck when displaying fast graphics (the PC's memory is much faster
  1139. than the video card's memory). Here's a general guideline:
  1140.  
  1141.    * If your PC has a VESA Local bus (VLB) or PCI bus (PCI), then make sure
  1142.      you're using a VLB or PCI card, as the speed of these cards' memory is
  1143.      at least twice as fast as a standard ISA card.
  1144.    * Try not to buy a video card unless you've tested it yourself on the
  1145.      store's computer--preferably with a demo or action game, which update
  1146.      the video card's memory over 30 times a second.
  1147.    * If you can't do that, then generally, get a video card based on either
  1148.      the Cirrus Logic, S3, or Tseng ET4000 or ET6000 chipset. These
  1149.      chipsets are very fast. (Many older demos use special hardware tricks
  1150.      that might only work on an ET4000; the ET4000 is considered the demo
  1151.      "standard".)
  1152.  
  1153. The Hercules Stingray uses the ARK-xxxx series chips. The Hercules Dynamite
  1154. Pro/Power use the Tseng ET4000 W32p chipset. They are probably the fastest
  1155. implementation of that chipset. The Stingray w/ it's ARK chipst is a tad
  1156. faster under DOS and a bit more noticeably faster under windows than the
  1157. Dynamite series.
  1158.  
  1159. If you really must have the lastest chipset then the et6000 is the one to
  1160. go for. On a GrafixStar 600, it does around 100mb/s a second (!!). However
  1161. it's about 7% slower in windows then the Matrox Millenium--only comes with
  1162. one channel of multi-bank ram (wait for a card which has 2 channels as it
  1163. means nearly 1 gig per second on the card) and the RamDAC isn't the
  1164. greatest.
  1165.  
  1166. Finally, several people have recommended the newer revision of the Matrox
  1167. Millenium, not only because of it's fast DOS performance, but because it
  1168. implements the VESA 2.0 specification in hardware, which several hi-res
  1169. demos are starting to support. If the card doesn't have VESA 2.0 in BIOS,
  1170. it can usually be emulated by a general-purpose VESA program, like UNIVBE
  1171. by Scitech Software (see FAQ 5.3).
  1172.  
  1173. The ATI 3D Expression+PC2TV card also has VESA 2.0 in BIOS, also with
  1174. low-res modes and a true linear framebuffer. Plus, it has TV output--you
  1175. can see many demos on your TV set or record them to videotape. :-) However,
  1176. to do so, the board forces the screen refresh rate to 60Hz, which can screw
  1177. up demos pretty badly if they're synced to a different refresh rate.
  1178.  
  1179. For a current list of video benchmarks, you might want to inquire on the
  1180. newsgroup comp.sys.ibm.pc.hardware.video.
  1181.  
  1182. ---------------------------------------------------------------------------
  1183.  
  1184. (5.1) What's Mode X?
  1185.  
  1186. Mode X (and its variant, Mode Y) is the slang term given by Michael Abrash
  1187. to the two most common unchained 256-color VGA video modes used in demos.
  1188. "Unchained" comes from the method of "unchaining" the video memory in order
  1189. to access it all--normal mode 13 (320x200x256 colors) is "chained". Mode X
  1190. is 320x240 and Mode Y is 320x200.
  1191.  
  1192. Unchaining the video memory has a slight disadvantage: The memory
  1193. organization is different, and is harder to program for (it is organized in
  1194. "planes of bytes", which is harder to work with than the standard linear
  1195. format of normal mode 13). However, the advantages are numerous; when you
  1196. unchain video memory, you get:
  1197.  
  1198.    * More video modes on a standard VGA, from 320x240 (square aspect ratio)
  1199.      to 360x480 (high res with 256 colors on any monitor) and others
  1200.    * The ability to pan across all of video memory, as if it were a big
  1201.      virtual page
  1202.    * Horizontal split screen, with the lower half not affected by the
  1203.      panning of the upper half
  1204.    * 2 or more video pages (by "panning" to an area of video memory one
  1205.      screen length down)
  1206.    * The ability to write up to four pixels at once with just one write
  1207.      (great for polygon filling)
  1208.  
  1209. In the "old days" of IBM PC demos, Mode X programming was the only way to
  1210. get any speed out of the slow ISA bus and slow video cards of the time.
  1211. Nowadays, normal mode 13 is making a comeback because of two things:
  1212.  
  1213.    * Texture mapping, "Phong" shading, and other modern effects are faster
  1214.      to do in normal mode 13 than in Mode X because the
  1215.      polyfiller/effect/etc. rarely writes out 2 or more pixels of the same
  1216.      color in a small area.
  1217.    * Local-bus video cards (VLB and PCI) can move video memory much faster
  1218.      than before, and are becoming quite common. So, it's easier/lazier to
  1219.      just write to an off-screen buffer, then blit the buffer to video RAM.
  1220.  
  1221. Here's some background on programming Mode X:
  1222.  
  1223. When you unchain, you are given access to all 256k of VGA RAM.
  1224. Unfortunately, only 64k is addressable by A000:0-A000:FFFF. The VGA then
  1225. utilizes the plane method of color selection. Due to some weird hardware
  1226. "features", instead of one bit in each plane controlling each pixel's
  1227. color, one byte in one plane controls the color of a pixel. This is
  1228. arranged according to the following formula:
  1229.  
  1230.      if Mode13h_offset = y*320 + x, then ModeX_offset=Mode13h_offset / 4,
  1231.      and ModeX_plane=Mode13h_offset % 4.
  1232.  
  1233. So:
  1234.  
  1235.      (0,0) would be at plane 0, offset 0
  1236.      (1,0) would be at plane 1, offset 0
  1237.      (2,0) would be at plane 2, offset 0
  1238.      (3,0) would be at plane 3, offset 0
  1239.      (4,0) would be at plane 0, offset 1
  1240.      (5,0) would be at plane 1, offset 1
  1241.      (6,0) would be at plane 2, offset 1
  1242.      (7,0) would be at plane 3, offset 1
  1243.      (8,0) would be at plane 0, offset 2
  1244.      .
  1245.      .
  1246.      .
  1247.      (0,1) would be at plane 0, offset 80
  1248.  
  1249. As mentioned in question 2.2.1, excellent Pascal and C libraries for
  1250. programming ModeX are at ftp://x2ftp.oulu.fi/pub/msdos/programming under
  1251. all the "xlib" directories. You can also pick up the Mode X FAQ, maintained
  1252. by Zoombapup // CodeX. While it's not known if this is being maintained
  1253. anymore, you can pick up a version of it at
  1254. http://www.mcs.com/~trixter/docs/modex.faq.
  1255.  
  1256. ---------------------------------------------------------------------------
  1257.  
  1258. (5.2) Why is Mode 13 sometimes faster than Mode X?
  1259.  
  1260. People are sometimes told that blitting is faster than flipping pages in
  1261. Mode X. That depends completely on how intelligent your drawing routines
  1262. are and how fast your video card is.
  1263.  
  1264. For example: If your flat-shaded polyfiller is written to utilize Mode X,
  1265. it can fill up to four pixels directly into video memory with a single
  1266. write. But if you draw completely to an off-screen buffer, then move that
  1267. buffer to display memory on a VLB or PCI video card, then yes, a simple rep
  1268. movsd will be faster than copying to Mode X, because with Mode X, you have
  1269. to (in a simple case) copy 16K, then write a couple of bytes to VGA to
  1270. switch planes, then copy another 16K, etc. until all 64K is done.
  1271.  
  1272. Here's some quick (Pascal, real-mode) examples for blitting:
  1273.  
  1274. Procedure move_repmovsd(src,dst:pointer;size:word); assembler;
  1275. {for moving off-screen buffers to Mode 13 display memory for VLB or PCI}
  1276. asm
  1277.   push ds
  1278.   les di,dst
  1279.   lds si,src
  1280.   mov cx,size
  1281.   shr cx,2
  1282.   db $66; rep movsw
  1283.   pop ds
  1284. end;
  1285.  
  1286. Procedure copyvscreentox(sourceseg,destseg,count:word);assembler;
  1287. {blits 64K buffer from RAM to unchained video memory; thanks to Jussi L. for help}
  1288. asm
  1289.   push ds
  1290.   mov ds,[sourceseg]
  1291.   mov es,[destseg]
  1292.   sub si,si
  1293.   sub di,di
  1294.   mov bl,1
  1295.  
  1296. @loop1:
  1297.   mov dx,3c4h
  1298.   mov ah,bl
  1299.   mov al,2
  1300.   out dx,ax
  1301.   mov cx,[count]
  1302.   shr cx,3
  1303.  
  1304. @loop2:
  1305.   mov al,[ds:si]
  1306.   mov ah,[ds:si+4]
  1307.   mov [es:di],ax
  1308.   add si,8
  1309.   add di,2
  1310.   dec cx
  1311.   jnz @loop2
  1312.  
  1313.   sub si,[count]
  1314.   inc si
  1315.   sub di,di
  1316.   shl bl,1
  1317.   cmp bl,16
  1318.   jne @loop1
  1319.  
  1320.   pop ds
  1321. end;
  1322.  
  1323. So you can see how much more is involved with copying Mode X screens. There
  1324. is still an advantage to doing this, though: You can copy to a hidden video
  1325. page, wait for verticle retrace, then simply switch pages. This ensures
  1326. that the visible page updating will be flicker-free.
  1327.  
  1328. Like I said, it completely depends on what you're doing. If you're doing a
  1329. starfield, you should use neither of the above methods, since a couple of
  1330. port writes for each star is just a silly waste of cycles. For that, you'd
  1331. wait for retrace, then erase all previous stars directly in video memory,
  1332. then draw. Even better, you wouldn't have to wait for retrace if you were
  1333. erasing each star as you plotted the new one, as the flicker generated by
  1334. that is almost imperceptible.
  1335.  
  1336. ---------------------------------------------------------------------------
  1337.  
  1338. (5.3) This demo requires VESA or UNIVBE. Where can I get it?
  1339.  
  1340. Take your pick: http://www.scitechsoft.com or ftp://ftp.scitechsoft.com
  1341.  
  1342. UNIVBE was officially renamed the Scitech Display Doctor, BTW.
  1343.  
  1344. ---------------------------------------------------------------------------
  1345. Slang/Glossary/Terms:
  1346. ---------------------------------------------------------------------------
  1347.  
  1348. (6.0) What's a diskmag?
  1349.  
  1350. A diskmag is an electronic magazine or newsletter that is distributed on a
  1351. semi-regular basis. It usually has demoscene news, reviews, party reports,
  1352. and general rambling. :-) Diskmags are similar to musicdisks (see FAQ 6.1)
  1353. in that they are executable programs that come with their own reader, which
  1354. itself usually has a nice selection of music and interface graphics.
  1355.  
  1356. You can find many diskmags at ftp://ftp.hornet.org/pub/demos/mags
  1357.  
  1358. ---------------------------------------------------------------------------
  1359.  
  1360. (6.1) What's a musicdisk?
  1361.  
  1362. A musicdisk is a collection of songs put out by a single music or demo
  1363. group (or, in rare cases, multiple groups--see the multi-group musicdisks
  1364. Chromatiks and Epidemic, for example) or musician whose distribution medium
  1365. is a single diskette. A musicdisk has a custom player built just for the
  1366. musicdisk--it plays only the songs on the disk, and usually has a nice
  1367. graphical interface or specific information from the composers on their
  1368. songs. Musicdisks are put out whenever the group feels it has enough music
  1369. to put in them, so they're released irregularly and infrequently.
  1370.  
  1371. You can find many musicdisks at ftp://ftp.hornet.org/pub/demos/music/disks
  1372.  
  1373. ---------------------------------------------------------------------------
  1374.  
  1375. (6.2) How is a musicdisk different from a music pack?
  1376.  
  1377. A music pack is very similar to a musicdisk, but with some important
  1378. differences. Here's a list of how music packs are different than
  1379. musicdisks:
  1380.  
  1381.    * Music packs are usually released from musicians or music groups only
  1382.      (groups who only do MOD/S3M-like music).
  1383.    * Music packs are usually released on a regular basis, like once a
  1384.      month.
  1385.    * Music packs have no custom player/interface (some include Future
  1386.      Crew's MDP player, however, which is a generic player that can have
  1387.      its menu customized).
  1388.  
  1389. The point is that, traditionally, music disks fit onto a single disk and
  1390. have their own player, as per the Amiga or C64. So, ultimately, if it
  1391. doesn't fit on a disk or come with it's own player, it's generally not
  1392. proper to call it a musicdisk.
  1393.  
  1394. Many people disagree with the above viewpoint, but most of those people are
  1395. pure music scene people, not demoscene people. Since this FAQ is for
  1396. comp.sys.ibm.pc.demos, I stick to the demo viewpoint.
  1397.  
  1398. ---------------------------------------------------------------------------
  1399. Demo Groups:
  1400. ---------------------------------------------------------------------------
  1401.  
  1402. (7.0) How can I create or join a demo group?
  1403.  
  1404. Advertise. Posting a message on your local demo-oriented BBS or on
  1405. comp.sys.ibm.pc.demos is probably a good way to start. You can also talk to
  1406. anyone on the usual IRC channels (see FAQ 3.1), or search demogroup's WWW
  1407. pages (see FAQ 3.2). You could even contact individual groups directly
  1408. through email.
  1409.  
  1410. ---------------------------------------------------------------------------
  1411.  
  1412. (7.1) Whatever happened to Future Crew?
  1413.  
  1414. (As of 5/10/96:)
  1415.  
  1416. As a group, nothing official (ie., they haven't disbanded officially yet).
  1417. Henchman has hinted that they will probably do a demo for Windows 95 as
  1418. soon as the Pyramid3D chip hits the market.
  1419.  
  1420. Commercial:
  1421.  
  1422.    * Psi, Trug, and Trug's brother designed and created the Pyramid 3D
  1423.      chip, which is supposed to be the fastest 3D accelerator chip in the
  1424.      PC world. Boards using this chip should be ready by December 1996. You
  1425.      can get more info on it at
  1426.      http://www.tritech-sg.com/mm/pyra/index.htm.
  1427.    * Most of the members of Future Crew formed Remedy Inc., a game company.
  1428.      Their first game, Hispeed (a racing game), has already been picked up
  1429.      by Apogee and should come out sometime in 1996. Gore studied business
  1430.      in school so that he could lead the company.
  1431.    * Purple Motion has done music for Bloodhouse, an Amiga game company,
  1432.      and continues to write music for game companies. It is also rumored
  1433.      that he is cutting a techno album.
  1434.  
  1435. Demos:
  1436.  
  1437.    * Purple Motion has contributed music to EMF since 1991, and continues
  1438.      to contribute to productions by Plant, a group formed from members of
  1439.      both EMF and Sonic PC.
  1440.    * Pixel is in the army as of this writing, but continues to draw for
  1441.      other groups.
  1442.  
  1443. Personal:
  1444.  
  1445.    * Some members are in the army as part of the mandatory Finnish army
  1446.      service.
  1447.    * Skaven is at a Disney cartooning school in Ireland, but it's rumored
  1448.      that he will return before completing his four years there.
  1449.  
  1450. ---------------------------------------------------------------------------
  1451.  
  1452. (7.2) Whatever happened to Triton?
  1453.  
  1454. Triton has just about switched from demos to commercial games. They keep
  1455. their name, but don't produce demos any more and don't plan to.
  1456.  
  1457. (As of 5/10/96:)
  1458.  
  1459. Commercial:
  1460.  
  1461.    * They are finishing up a game called Into The Shadows that offers some
  1462.      of the best 3D graphics in a PC game. It's also one of the last games
  1463.      to be programmed in pure assembler. It is supposed to be much faster
  1464.      than ID's Quake.
  1465.  
  1466. Demos:
  1467.  
  1468.    * Lizardking occaisionally enters compos and lends his music talents to
  1469.      other groups.
  1470.    * Triton also continue to maintain and update FastTracker 2.0x (see FAQ
  1471.      2.4), one of the best trackers ever created.
  1472.  
  1473. Personal:
  1474.  
  1475.    * Vogue, Mr. H, and Lizardking were in California for a bit finishing up
  1476.      the game.
  1477.  
  1478. ---------------------------------------------------------------------------
  1479.  
  1480. (7.3) Whatever happened to Cascada?
  1481.  
  1482. Cascada has gone through a couple of changes since 1994: First they split
  1483. up into Cascada VR, a commercial venture, and the remaining members joined
  1484. Imphobia for a while, although that didn't last.
  1485.  
  1486. (As of 5/10/96:)
  1487.  
  1488. Commercial:
  1489.  
  1490.    * Cascada VR reportedly has a very nice virtual reality 3D engine that
  1491.      they are trying to sell for the use of a game company.
  1492.  
  1493. Demos:
  1494.  
  1495.    * Zodiak continues to compose music, both in general and for Cascada
  1496.      demo productions.
  1497.    * New members of Cascada created an intro for TP95 (which had really
  1498.      nice shadows, BTW).
  1499.  
  1500. Personal:
  1501.  
  1502.    * Nothing known at this time. Anyone?
  1503.  
  1504. ---------------------------------------------------------------------------
  1505.  
  1506. (7.4) Whatever happened to Twilight Zone?
  1507.  
  1508. Twilight Zone gained early popularity with funny demos that were the first
  1509. to support the GUS (Jungly Kitchen and Monty Python). Since then, they've
  1510. formed a game company.
  1511.  
  1512. Commercial:
  1513.  
  1514.    * Twilight Zone is now a game company with their first game, Interpose,
  1515.      published by Webfoot Technologies. You can download the shareware
  1516.      version of their game from http://www.webfootgames.com
  1517.  
  1518. Demos:
  1519.  
  1520.    * Inactive.
  1521.  
  1522. Personal:
  1523.  
  1524.    * Nothing known at this time. Anyone?
  1525.  
  1526. ---------------------------------------------------------------------------
  1527.  
  1528. (7.5) Whatever happened to Byterapers?
  1529.  
  1530. Byterapers are arguably the oldest surviving demogroup, starting out on the
  1531. C64 and Amiga, and currently doing projects on both the C64 and PC. As for
  1532. their current status, they put out a press release, which, ah, speaks for
  1533. itself:
  1534.  
  1535. Byterapers, Inc., a demogroup celebrating this year their
  1536. 10th anniversary, has entered the PC demoscene on 1st weekend
  1537. June 1996, by releasing the demo "Drill Me, Please Me"
  1538. in Abduction'96 demoparty in Oulu, Finland.
  1539.  
  1540. This first PC-release ever took part in Abduction's democompetition,
  1541. and won the first place by a groovy margin of almost twice as
  1542. much votes as 2nd or 3rd participants.
  1543.  
  1544. The winning of a democompetition with Byterapers' first PC-release
  1545. is a great way to show that this 10 years old group is still
  1546. alive and active, and continues our already established line
  1547. in Abduction'96 demoparty in Oulu, Finland.
  1548.  
  1549. Products like the World of Code -series (WOC, WOC 2, WOC 3) and
  1550. Extremes are top notch releases on C-64 -demoscene, and our three
  1551. latest entries in democompetitions have gained two wins and
  1552. one second place, which are nicely supplemented by "Drill Me,
  1553. Please Me"'s instant success.
  1554.  
  1555. Byterapers' history spans from the year 1986, when four little
  1556. would-be fellas started using name "Byterapers" on their
  1557. small releases. In two years group had grown into multi-national
  1558. and rather famous, starting 1988 on Amiga. In 1989 the group
  1559. stopped C-64 activities and concentrated on making career on
  1560. the Amiga, making rather well there as well. Around 1991-1992
  1561. group started a long sleep, resting from earlier efforts
  1562. and doing a lot of own inner stuff, picnics, ByteParties etc
  1563. but never finishing any products.
  1564.  
  1565. >From this six years period Byterapers, known in short as (B),
  1566. had released around 150 demos on C-64, not counting intros
  1567. or other small stuff, a countless number of cracks and
  1568.  all-time high position as NO:9 in world's cracking-group
  1569. charts (an activity which was later banned and stopped completely),
  1570. seven musicdisks on Amiga, about 20 Amiga-demos not counting
  1571. intros and other small stuff, bunch of weird fun-releases
  1572. an uncontested fame of heavy partydudes always drunk,
  1573. noisy, doing strange stuff, looking strange, wandering from
  1574. bar to bar but overall being quite harmless.
  1575.  
  1576. (B) made comeback in 1994 by releasing the World of Code -demo
  1577. in spring'94. This resulted in many scene-awards like:
  1578. -comeback of the year
  1579. -demogroup of the year
  1580. -demo of the year
  1581. -coder of the year
  1582. As voted in _several_ leading C-64 disk-publications.
  1583.  
  1584. As looking into 1996 and forward, (B) plans to exist and booze,
  1585. and release occasinal demo on C-64 and PC when feasible.
  1586.  
  1587. Byterapers' side company, the "Byterapers Movie Productions"
  1588. s also finalizing the 4th Byterapers world-class, high quality
  1589. home movie known as "Splattered Death II - River Runs Red",
  1590. hopefully hitting audiences this summer is we manage to scrape
  1591. couple bucks to pay the camera rents to they'll let us edit the
  1592. film.
  1593.  
  1594. Earlier Byterapers Movie Productions Big Money Great Quality
  1595. whole-evening all-family no-blood films are:
  1596. Splattered Death
  1597. Fochrybenis
  1598. (B) Files
  1599.  
  1600. the latter being the hugely-successful and famous X-Files parody.
  1601. Followup coming this autumm! On plans also "Byterapers goes Doom".
  1602.  
  1603. Byterapers - a pain in your arse
  1604. Byterapers - the reason for your erection
  1605.  
  1606. Official warning bit:
  1607. "Byterapers is dangerous for your brain. Booze kills braincells.
  1608. Official Byterapers membership-requirement is to be able to consume
  1609. huge amounts of alcohol."
  1610. "Byterapers is no demogroup. It's is way of life."
  1611.  
  1612. (B) memberstatus:
  1613.  
  1614. NAmn (Loc) E-Mail Kone*WasMachts
  1615.  
  1616. (B) Pielavesi
  1617. Nico - Amiga*gfx
  1618. Lasse - -*hitman
  1619. Proton - -*hitman, wall
  1620. Enema - *hitman, king fartTampere
  1621. Mr. Sex b150542@proffa.cc.tut.fi C64*kooder,laatta
  1622. Dr. Dick t136344@proffa.cc.tut.fi C64/Amiga*kooder,hw-huru-ukko,guru
  1623. Birra jsoini@vip.fi PC*hitman, myy halvalla, sheepish partyguard
  1624.  
  1625. (B) Savon SNTL
  1626. Reznor - -*hitman,kiljudoctor, movie master
  1627. Hazard hazi@finhost.fi Amiga*hitman,teknokko,gamemaster,warlock,hirmu
  1628. Jazz jazz-b@freenet.hut.fi -*muzza, party, Her Royal Cuteness
  1629. Grendel jkauppin@muikku.jmp.fi C64/Amiga/PC*hitman,hirmu
  1630. Kasper jarkko.sonninen@lut.fi C64/PC*kooder,hitman
  1631. Professor Fate PC*hitman
  1632. Lanttu U.S.Army on PC*kooder,hw-huru-ukko,hitman,official mascot
  1633. T.o.B - PC*muzza,hitman
  1634. Sivu - PC*kooder,hirmu
  1635.  
  1636. (B) Muualla
  1637. Icemann Vantaa - PC*hitman, expensive partyguard (batman)
  1638. TP Helsinki/Somero pomppuju@atki.helbp.fi Amiga/PC*kooder
  1639. Mike JyvΣskylΣ - C64*gfx
  1640. Jate JyvΣskylΣ ? PC*gfx
  1641. Micron Raahe mhyvonen@ratol.fi on PC*hitman
  1642. Albert Helsinki ? Amiga*hitman
  1643. Kemu Oulu mysti@stekt.oulu.fi C64/Amiga*Design,juoppohullu
  1644. Kraku ? cracker@freenet.hut.fi PC*kooderRuσtti/Tukholma
  1645. Dr. Star ? ?*?
  1646. CSA f93-caa@nada.kth.se ? ?*?
  1647. Speed-Head damaskus@algonet.se amigamuzzak,3d,unix ja nettaus
  1648.  
  1649. This press-release has been written while drinking Heineken-beer
  1650. by Grendel/Byterapers, the founder of whole stupid group.
  1651. Have fun.
  1652.  
  1653. Ps.
  1654. Availability of the demo will be accounced, maybe party-organizers
  1655. will spread it bu twe'll make a fixed version.
  1656.  
  1657. grendel/(B)
  1658.  
  1659. --
  1660. Jukka O. Kauppinen  Mail: Sankarinkatu 9A3,74100 IISALMI,FINLAND
  1661. Journalist          E-Mail: jkauppin@muikku.jmp.fi
  1662. MikroBITTI          Tel/fax +358-77-24225
  1663.   Byterapers Inc.   Amiga 500/1200(030),PC486,CD32,C64,Spectrum
  1664.  
  1665. (7.6) Whatever happened to Vibrants?
  1666.  
  1667. Vibrants was one of the most famous and all-around liked groups on the C64,
  1668. with many famous musicians who have done work for various video games on
  1669. various platforms; they also dabbled in PC Adlib music, producing arguably
  1670. the best Adlib music and Adlib tracker ever. They are now fully migrating
  1671. to the PC, as this press release illustrates:
  1672.  
  1673. Vibrants has now started on the PC.
  1674.  
  1675. If you need music for a gameproject, feel free to contact Vibrants at
  1676. this adress :
  1677.  
  1678.         Vibrants
  1679.         Co. / Thomas Egeskov Petersen
  1680.         Merkurvej 2
  1681.         6600 Vejen
  1682.  
  1683. Vibrants started on the 64 quite a while ago, and has over the years
  1684. emerged to a varity of platforms. We work mostly on the PC nowadays,
  1685. in form of mods, midi, or CD (Which ofcourse plays on any CD-Rom based
  1686. platform)
  1687.  
  1688. Vibrants Member are :
  1689.  
  1690. Thomas Mogensen         (aka. Drax )
  1691. Torben Hansen           (aka. Metal)
  1692. Jesper Olsen            (aka. JO)
  1693. Jens Christian Huus     (aka. JCH)
  1694. Thomas Egeskov Petersen (aka. Laxity)
  1695.  
  1696. Feel free to contact us, in case you're interested !
  1697.  
  1698. ---------------------------------------------------------------------------
  1699. Demo Parties/Compos:
  1700. ---------------------------------------------------------------------------
  1701.  
  1702. (8.0) What's a Demo Party? What's a Demo Compo?
  1703.  
  1704. A Demo Party is just that--a party celebrating demos. People bring their
  1705. computers, show off effects, watch demos, track music, etc. They're usually
  1706. on the small side; no more than 50 people.
  1707.  
  1708. A Demo "compo" (Euro slang for "competition"), on the other hand, is a
  1709. competition where prizes are given to the best demos and intros. While
  1710. parties are small, compos are large. Compos are usually over 400 people
  1711. (the largest are The Party and Assembly, which usually host over 3500
  1712. people), and are mostly held in schools because they're easy to rent and
  1713. don't cost a lot of money. Activites are held all 24 hours of the day, so
  1714. it's difficult to get sleep and not miss something cool. As a result, many
  1715. people simply don't sleep during a compo. :-)
  1716.  
  1717. After a party or compo, some groups put out "party reports", where you can
  1718. see pictures taken at the party/compo and read text describing the results
  1719. of the compo, and see pictures of events and people at the compo. One place
  1720. you can find party reports is http://ftp.hornet.org/pub/demos/party
  1721.  
  1722. ---------------------------------------------------------------------------
  1723.  
  1724. (8.1) When and Where are Demo Parties held?
  1725.  
  1726. Much to the chagrin of North American 'sceners, most demo compos are held
  1727. overseas, in Europe. Only one recurring demo party, NAID, is held in North
  1728. America (Montreal, Quebec, Canada), although it is rumored that after 1996
  1729. there will not be any more; Eclipse '97 is rumored to take over.
  1730.  
  1731. Some Demo compos are held every year at roughly the same time:
  1732.  
  1733.    * Assembly: August
  1734.    * The Party: Christmas
  1735.    * The Gathering: Easter
  1736.  
  1737. aschlud@autelca.ascom.ch (Denis Schluchter) was nice enough to write up
  1738. this schedule for the FAQ:
  1739.  
  1740.                         DEMO EVENTS '95:
  1741.  
  1742. Bizarre                       9/10  September   Etten-Leur, Holland
  1743. Wired                         3/4/5 November    Mons, Belgium
  1744. The Party                     Winter
  1745.  
  1746.                         DEMO EVENTS '96:
  1747.  
  1748. The Partyplaces may change! (I took those from last year ...)
  1749.  
  1750. X                                Spring         Utrecht, Holland
  1751. The Gathering
  1752. NAiD                                            Canada
  1753. Abduction
  1754.  
  1755. Somewhere in Holland             Summer         Roosendaal, Holland
  1756. Juhla                                           Iisalmi, Finland
  1757. Bushparty
  1758. The Summer Encounter                            Denmark
  1759. Assembly                                        Helsinki, Finland
  1760. Gasp                                            Montpellier, France
  1761.  
  1762. Wired                            Fall           Mons, Belgium
  1763.  
  1764. The Party                        Winter
  1765.  
  1766. Phoenix / Hornet offered this more up-to-date (hey, it's his job :-) list
  1767. as well:
  1768.  
  1769. Other Regular Demo Parties:
  1770.                                                             code on hornet.org
  1771.  Spring: X                      Holland         since 1995  X9?
  1772.          Cache                  Hungary         since 1994  CAC9?
  1773.          Saturne                France          since 1994  SAT9?
  1774.          Scenest                Hungary         since 1995  SCE9?
  1775.          Mekka/Symposium        Germany         since 1996  MEK9?/SYM9?
  1776.  Summer: Abduction              Finland         since 1994  ABD9?
  1777.          Enlight                Russia          since 1995  ENL9?
  1778.          Euskal                 Spain           since 1995  EUS9?
  1779.          Icing                  Sweden          since 1995  I9?
  1780.          Remedy                 Sweden          since 1995  REM9?
  1781.          Summer Encounter       Denmark         since 1995  SE9?
  1782.          The Scene              Singapore       since 1995  TS9?
  1783.  Fall:   Bizarre                Holland         since 1994  BIZ9?
  1784.          Movement               Israel          since 1995  MOV9?
  1785.          Wired                  Belgium         since 1994  WIR9?
  1786.  
  1787. Other than this list, you can find more demo-related events at
  1788. http://hagar.arts.kuleuven.ac.be/~sdog/party/ which lists other WWW pages
  1789. dedicated to demo parties and demo compos.
  1790.  
  1791. ---------------------------------------------------------------------------
  1792.  
  1793. (8.2) How are Demo Compos judged?
  1794.  
  1795. Good question. First, a point system has to be agreed on. There are many
  1796. ways of doing this; for example, at NAID'95, each demo was given up to 5
  1797. points for graphics, programming, music, and overall design. In this case,
  1798. the demo with the highest total point value won, the 2nd higest came in
  1799. 2nd, etc. Second, if there are way too many entries, all entries go through
  1800. a preselection process, where an informal vote disqualifies substandard
  1801. entries. (This step only applys to compos with a judging panel; see below.)
  1802.  
  1803. Now, who actually does the judging? Usually, there are two different
  1804. methods: A public vote, and a juding panel.
  1805.  
  1806.    * Public Vote: The people attending the compo vote on the demos shown.
  1807.      Pros: The public can't complain about the judging, since they were the
  1808.      ones who voted. Cons: The public is usually way off. While the crowd
  1809.      consists of true professional programmers, musicians, and artists,
  1810.      they usually vote highest for demos that have "flash" and "pizazz",
  1811.      ignoring the actual quality or design (or lack thereof).
  1812.    * Judging Panel: A panel is created, usually with a cross section of
  1813.      programmers, musicians, and graphicians. The panel can not have anyone
  1814.      in it that's involved in some way with the demos being voted upon.
  1815.      Pros: The judging is usually fair. Cons: The public usually disagrees
  1816.      with some of the judge's decisions, especially during the preselection
  1817.      process.
  1818.  
  1819. Please note that any of these methods is not necessarily better than any
  1820. other. Sometimes they're combined in some way, like NAID'95, where there
  1821. was a public vote that determined who got the "public favorite prize", and
  1822. a judging panel, who determined the "offical" 1st-10th place order and top
  1823. three prizes.
  1824.  
  1825. ---------------------------------------------------------------------------
  1826. Operating Systems and Platforms:
  1827. ---------------------------------------------------------------------------
  1828.  
  1829. (9.0) Why aren't there any Windows/Windows 95 demos?
  1830.  
  1831. Probably for the simple fact that Windows does several things to restrict
  1832. the typical democoder, including inhibit system performance, and restrict
  1833. direct access to hardware. These limitations have workarounds, but it's so
  1834. much easier to just dive in under DOS with assembly language that nobody
  1835. wants to make one.
  1836.  
  1837. Windows is generally looked down upon in the demo community, because of
  1838. it's slow speed and huge size; many joke that it's one of the lamest demos
  1839. ever written. :-)
  1840.  
  1841. Windows 95, on the other hand, has some possibilities for being a demo
  1842. platform, with it's DirectX API. DirectX has direct interfaces to
  1843. hardware--DirectSound, DirectDraw, etc.--so it's possible to circumvent the
  1844. limitations listed above. Still, the API is overhead, so by default it
  1845. can't be as fast as raw DOS, and as such is still looked down upon by
  1846. democoders.
  1847.  
  1848. If you're interested in coding demos for Windows 95, you can order the
  1849. Win95 Game SDK directly from Microsoft completely free-of-charge, or
  1850. download it from their web site at http://www.microsoft.com. If contacting
  1851. them, you just need to tell them that you are "porting your games which you
  1852. have under development to the Windows 95 DirectX platform". The Game SDK
  1853. (GDK) includes DirectDraw, DirectSound and DirectPlay.
  1854.  
  1855. But in order to fully develop Windows 95 apps, you might need the Win32 SDK
  1856. too, which comes with the "Microsoft Developer Network (MSDN) level 2".
  1857. This costs around $500US per year and it includes all MS' SDKs (about 30
  1858. CDs), and it comes with a quarterly update service too.
  1859.  
  1860. If you want to learn more about DirectX, consult the following links:
  1861.  
  1862.    * http://ourworld.compuserve.com/homepages/stant/ - Cutting-Edge
  1863.      Direct3D Programming
  1864.    * http://www-scf.usc.edu/~permadi/gamelink.htm - Floating Point's Game
  1865.      Developers Resource List
  1866.    * http://www.employees.org/~mnorton/ - Spells of Fury: Direct X
  1867.      Programming
  1868.    * http://www.mathematik.uni-marburg.de/~rusi/mikdx/mikdx.html - Mikmod
  1869.      For Directsound Homepage
  1870.    * http://www.microsoft.com/mediadev/ - Microsoft Developer Network -
  1871.      Interactive Media
  1872.    * http://www.readmedotdoc.com/1572313307.htm - DirectX Game Programming
  1873.      for Microsoft Windows 95 w/CD, by Leavens, Alex
  1874.    * http://www.rosenmader.com/lar/DirectX/DirectDraw.html - DirectDraw
  1875.      Programming
  1876.    * http://www.silvercrk.com/directx/ - DirectX Developer's Page
  1877.    * http://www3.hmc.edu/~tsemple/games/win95.html - Hot Win95 Game
  1878.      Programming
  1879.  
  1880. Luc-Eric Rousseau had this to contribute:
  1881.  
  1882. Ok, here are my comments (as a Windows developper).
  1883. The Direct X allows programmer everything they do in DOS, but doesn't save
  1884. you much work.  It is just meant as a clean and safe way to use the
  1885. hardware directly under Windows 95.  As such, demo coders can write the
  1886. code the way they like -- all assembler, if they like, and they _will_
  1887. gain much performance by doing that.  These demos _will_ however always
  1888. run slower than in DOS, of course, but they will be more user-friendly (no
  1889. clean reboot, compatibility will all sound cards, ect).
  1890.  
  1891. Demo coders will have no interest in Direct3D - they benefit from
  1892. custom-made 3d routines, and anyway that's the whole fun of writting
  1893. demos.  Direct3D might be used by art-oriented groups.
  1894.  
  1895. Direct sound is like programming a very easy to program new audio card.
  1896. I'm sure it's possible to port a DOS mod player over to windows in less
  1897. than one week.  Even without it, taking a look at Mod4Win tells you
  1898. there's a lot of music to be played under Windows.
  1899.  
  1900. The only problem is that documentation is hard to understand for
  1901. medium-level Windows programmers .  But it's a bit like VESA, it has been
  1902. a gourou thing for long, but (really) not anymore.
  1903.  
  1904. The DirectX SDK is less than 6 month old, it will take at least a year for
  1905. people to be at ease with it.  Many groups will jump over to Linux
  1906. instead, but the audience just isn't there.  Of course, DOS will always
  1907. work! But debugging ease in other environment will move people to other
  1908. environment.  It just isn't fun to debug a DOS program - unless you're
  1909. well equipped with a dual-monitor setup/
  1910.  
  1911. My prediction is than in one year, you'll see as many demos under
  1912. Windows95 as you see VESA demos now : still a thing for programmers with
  1913. plenty of experience.  The first few ones will get plenty of attention,
  1914. though.
  1915.  
  1916. ---------------------------------------------------------------------------
  1917.  
  1918. (9.1) Why aren't there any Linux demos?
  1919.  
  1920. There's one, actually: Hard Rox by Skal. But considering that Linux is a
  1921. fast 32-bit multitasking operating system and that good optimizing
  1922. compilers are free under Linux, you might think that many more demos exist
  1923. for it. But while some screen savers that use Linux's SVGAlib might be
  1924. considered demos, "true" demos haven't caught on (although many claim they
  1925. are porting their demos over to Lunix).
  1926.  
  1927. One possible reason for this is that the multitasking nature of the OS
  1928. means that the CPU cannot be dedicated to any one critical task--for
  1929. example, the inner loop of a texture-mapping engine, or vertical-retrace
  1930. interrupts, or anything else requiring exclusive use of the CPU. Another
  1931. possible explanation is that even if dedicated CPU attention was possible,
  1932. it is difficult to do so without writing a device driver, something that
  1933. many democoders are not willing to do. Still, it seems a bit more likely
  1934. that demos will be written for Linux before they are written for Windows,
  1935. if only for the fact that Linux is free and fast.
  1936.  
  1937. ---------------------------------------------------------------------------
  1938.  
  1939. (9.2) Are there any demos that run on PC platforms that aren't DOS-based?
  1940.  
  1941. Only two that I know of: An OS/2 demo has been written for OS/2 3.0 (OS/2
  1942. Warp, with MMPM/2 extentions installed) called Peripheral Evolution OS/2 by
  1943. Ethos. It also comes with its own source code. A demo for Linux also
  1944. exists, Hard Rox by Skal. It won the Wired '96 demo competition, and it
  1945. runs in DOS as well.
  1946.  
  1947. There is a ongoing project to create an operating system exclusively for
  1948. writing demos, called the DemOS project. You can find information about it
  1949. at three possible places:
  1950.  
  1951.    * http://www.cdrom.com/pub/demos/info/DemOS/
  1952.    * http://www.ifi.uio.no/~dag-erli/demos/
  1953.    * http://www.skolesjefen.oslo.no/skole/persbraten/hjemmesider/demos/
  1954.  
  1955. The first URL listed (cdrom.com) is the fastest for people in North
  1956. America.
  1957.  
  1958. ---------------------------------------------------------------------------
  1959.  
  1960. (9.3) I don't own a PC. Are demos written for other computers?
  1961.  
  1962. Several, actually. Demos didn't originate on the PC; they've been around
  1963. for over a decade, having grown from the cracktros that software pirates
  1964. used to tack onto their releases. Nowadays, demogroups are not related to
  1965. cracking groups anymore; in fact, most PC demogroups were never related to
  1966. a cracking group.
  1967.  
  1968. Demos exist/have existed for the following platforms (listed in approximate
  1969. chronological order):
  1970.  
  1971.    * Apple ][ (in a cracktro form only, to my knowledge)
  1972.    * C64 (where the demo scene was truly born)
  1973.    * Amstrad CPC (it was very popular in Europe, especially in England and
  1974.      in France, at the same period as the C64, and there have been good
  1975.      demos for it. Check ftp://ftp.nvg.unit.no/pub/cpc or
  1976.      ftp://ftp.ibp.fr/pub/amstrad for the emulator and software...)
  1977.    * Commodore Plus/4
  1978.    * Spectrum 128
  1979.    * Apple ][gs
  1980.    * Atari ST
  1981.    * Amiga (where the demo scene flourished into new territory)
  1982.    * Atari Falcon
  1983.    * Macintosh (Harassment, Erotomania, Frivilous Exodus, and Mirror Image
  1984.      are a few; I believe they require a 68030)
  1985.    * IBM PC
  1986.    * Arcon Archimedes (This is a RISC PC. There have been demos for that
  1987.      computer at the Symposium Party held in Hamburg, Germany.)
  1988.  
  1989. Some demos exist for game consoles! No, I'm not lying. There are some
  1990. demogroups for the Super NES, for example, that connect to the SNES through
  1991. a "cart copier" connected to an Amiga, and they program the machine that
  1992. way. The SNES has a decent sound chip and texture-warping built into the
  1993. machine, so I guess some people got curious. :-) Check out
  1994. http://www.futureone.com/~damaged/Consoles/SNES/demos.html for some
  1995. examples.
  1996.  
  1997. ---------------------------------------------------------------------------
  1998.  
  1999. (9.4) Are Amiga groups migrating to the PC?
  2000.  
  2001. With the death of Commodore and the future of the Amiga no longer clear,
  2002. some groups have decided to move partially or fully to the PC. In recent
  2003. months the PC demo scene has seen music, graphics, or entire demos by
  2004. members or former members of CNCD, Oxygene, Bomb, Silents, Scoopex,
  2005. Byterapers, etc.
  2006.  
  2007. Nooon has had contributions from some Sanity members (Moby and RA); many
  2008. members of Pulse are from the Amiga scene as well (DreamDealers).
  2009.  
  2010. Oxygene is actually ex-Atari and an ex-Amiga group. :-) Oxbab and company
  2011. wrote one of the best demos for old Atari ST machines.
  2012.  
  2013. ---------------------------------------------------------------------------
  2014.  
  2015. (9.5) Are there any Java demos?
  2016.  
  2017. As of the moment, nothing serious demo-related exists for Java, for a
  2018. couple of reasons:
  2019.  
  2020.    * Java, as a language in general, specifically prohibits you from
  2021.      modifing the hardware directly. This makes it difficult to program
  2022.      your own graphics or sound routines with any degree of speed.
  2023.    * Java on personal computers is usually an interpreted or p-code
  2024.      language, which does not deliver the speed that demos demand. This
  2025.      could change when Sun comes out with the Java chip and Java computers,
  2026.      however.
  2027.  
  2028. Many people are trying, however. http://www.hornet.org/pub/demos has a link
  2029. to Demo Java that lists some demo effects on the web. There are other
  2030. sources as well:
  2031.  
  2032.    * http://www.uni-koblenz.de/~cohnen/SIMPLE.HTM - Phong shading
  2033.    * http://www.dur.ac.uk/~d405ua/Plasma.html - Plasma, with frames per
  2034.      second display
  2035.    * http://www.assembly.org/javacomp/ - Assembly Organizing is hosting a
  2036.      Java demo competition at this URL.
  2037.  
  2038. ---------------------------------------------------------------------------
  2039.  
  2040. (9.6) Why aren't there any BeBox demos?
  2041.  
  2042. There are no BeBox demos because the platform is too new, and hardly anyone
  2043. owns one. However, the Bebox seems like one of the best new machines to
  2044. come along for demos. As far as fast graphics are concerned, the Be product
  2045. demo has a part where it plays 6 true-color video feeds onscreen
  2046. simultaneously, without choppiness. Plus, it has a standard sound
  2047. interface.
  2048.  
  2049. For more info, check out the Be homepage (http://www.be.com/) and the Be
  2050. newsgroup (comp.sys.be).
  2051.  
  2052. ---------------------------------------------------------------------------
  2053. Technical/Programming Info:
  2054. ---------------------------------------------------------------------------
  2055.  
  2056. (10.0) What's the fastest PutPixel?
  2057.  
  2058. There are two basic version: One that uses a lookup table, and one that
  2059. doesn't. The lookup-table version is the fastest.
  2060.  
  2061. Non-lookup-table version:
  2062.  
  2063. Procedure PutPixel(X,Y:Word; c:Byte); Assembler;
  2064. Asm
  2065.   mov AX,0A000h
  2066.   mov ES,AX
  2067.   mov AH,Byte Ptr Y
  2068.   mov BX,X
  2069.   add BX,AX
  2070.   ShR AX,2
  2071.   add BX,AX
  2072.   mov AL,c
  2073.   mov ES:[BX],AL
  2074. End;
  2075.  
  2076. Lookup table version:
  2077.  
  2078. Var
  2079.   lut : Array[0..199] Of Word;
  2080.  
  2081. Procedure PutPixel_LUT(X, Y : Word;  C : Byte);  Assembler;
  2082. { code from  Jannie Hanekom  }
  2083. { optimized by  Andreas Jung }
  2084. Asm
  2085.   mov  BX, Y
  2086.   add  BX, BX
  2087.   mov  AX, 0A000h
  2088.   mov  ES, AX
  2089.   mov  BX, Word Ptr lut[BX]  { Note:  BX not changed within 2 cycles }
  2090.   mov  CX, X
  2091.   add  BX, CX
  2092.   mov  AL, C
  2093.   mov  Byte Ptr ES:[BX], AL  { Again 1 cycle before memory move }
  2094. End;
  2095.  
  2096. Just make sure you fill the lookup table before you use the procedure, with
  2097. something like for i := 0 To 199 Do lut[i] := i*320.
  2098.  
  2099. Kneebiter has provided 386 protected-mode equivalents:
  2100.  
  2101. ;eax - color
  2102. ;edi - y
  2103. ;ebx - x
  2104. ;
  2105. ; The fastest (?!?) non-table version
  2106.  
  2107.     shl    edi, 6                ; ebx *= 64                    3 clocks
  2108.     lea    edi, [edi*4+edi]      ; ebx *= 5   (64*5 = 320)      1 clock
  2109.     mov    [edi+ebx+0a0000h], al ;                              memory ref
  2110.  
  2111. ; The fastest (?!?) table version
  2112.  
  2113.     mov    edi, [edi*4 + table]  ;                              memory ref
  2114.     mov    [edi+ebx+0a0000h], al ;                              memory ref
  2115.  
  2116. What many people don't realize is that the real fastest putpixel is the one
  2117. inside your own code, polyfiller, or whatever, because the time it takes to
  2118. push the registers on the stack and call the function takes more time than
  2119. actually plotting the pixel! So, try to incorporate these methods into your
  2120. own program instead of making a function you call out for.
  2121.  
  2122. ---------------------------------------------------------------------------
  2123.  
  2124. (10.1) How do I program a Vertical-Blank Interrupt?
  2125.  
  2126. A VBI can be done with something like this:
  2127.  
  2128. proc INT8 ; VBI
  2129.   SetVGAStartAddress ;optional
  2130.   WaitForVRT
  2131.   SetPalette ;optional...
  2132.   ReprogramTimer ;with a rate FASTER than the screen refresh rate
  2133.   EOI
  2134. end
  2135.  
  2136. This can be expanded further into a system that reaches any scan line, like
  2137. this, for instance:
  2138.  
  2139. proc INT8_part1 ; VBI
  2140.   WaitForVRT
  2141.   ReprogramTimer ; make the int occur in the middle of the screen
  2142.                  ; or any scanline you want
  2143.   SetInt8Vector(INT8_part2)
  2144.   EOI
  2145. end
  2146.  
  2147. proc INT8_part2 ; some scan line X -interrupt
  2148.   WaitForHRT
  2149.   DoSomeFancyStuffWithTheScreen
  2150.   ReprogramTimer ; make the int occur before the VRT
  2151.   SetInt8Vector(INT8_part1)
  2152.   EOI
  2153. end
  2154.  
  2155. Just add as many parts to this thingy! For a good example, check the
  2156. productions of White Shadow/Renaissance (no longer in Renaissance, though).
  2157. There are some of them in ftp.hornet.org. For a start, take a look at
  2158. DoWhackaDo and DeadBeat BBS-intro.
  2159.  
  2160. Here's a protected mode assembler example. The main thing that will change
  2161. for other asm based languanges is the interrupt hooking.
  2162.  
  2163.  
  2164. .386p
  2165. code32  segment para public use32
  2166.         assume cs:code32, ds:code32
  2167.  
  2168. include pmode.inc
  2169.  
  2170. public  VBI_function
  2171. public  frame
  2172.  
  2173. ; DATA
  2174.  
  2175. DELAY   EQU             16805
  2176.  
  2177. old_pmode_irq0_vect     dd      ?
  2178. old_rmode_irq0_vect     dd      ?
  2179. irq0_buffer             db      21 dup (?)
  2180. old_pmode_irq1_vect     dd      ?
  2181. old_rmode_irq1_vect     dd      ?
  2182. irq1_buffer             db      21 dup (?)
  2183. VBI_function            dd      ?
  2184. frame                   dd      ?
  2185.  
  2186. ; CODE
  2187.  
  2188. _main:
  2189.         sti
  2190.  
  2191.         mov     VBI_function, offset _ret      ; notice that I initialize
  2192.                                                ; VBI_function before hooking
  2193.                                                ; the IRQs
  2194.         call    hookirq1
  2195.         call    hookirq0
  2196.  
  2197.         ; blah, blah, blah...
  2198.  
  2199.         call    unhookirq1
  2200.         call    unhookirq0
  2201.         jmp     _exit
  2202.  
  2203. hookirq1:                                   ; hook the keyboard
  2204.         mov     bl, 1
  2205.         call    _getirqvect
  2206.         mov     old_pmode_irq1_vect, edx    ; in pmode
  2207.         mov     edx, offset newirq1
  2208.         call    _setirqvect
  2209.         mov     edi, offset irq1_buffer
  2210.         call    _rmpmirqset                 ; and in real mode, just in case.
  2211.         mov     old_rmode_irq1_vect, eax
  2212.         ret
  2213.  
  2214. unhookirq1:
  2215.         mov     bl, 1
  2216.         mov     eax, old_rmode_irq1_vect    ; unhook real mode kb IRQ
  2217.         call    _rmpmirqfree
  2218.         mov     edx, old_pmode_irq1_vect    ; unhook pmode kb IRQ
  2219.         call    _setirqvect
  2220.         ret
  2221.  
  2222. newirq1:                                    ; just completely ignore the keyboard
  2223.         push    eax
  2224.         in      al, 60h
  2225.         mov     al, 20h
  2226.         out     20h, al
  2227.         pop     eax
  2228.         sti
  2229.         iretd
  2230.  
  2231. hookirq0:                                   ; see comments from hookirq1
  2232.         cli
  2233.         mov     bl, 0
  2234.         call    _getirqvect
  2235.         mov     old_pmode_irq0_vect, edx
  2236.         mov     edx, offset newirq0
  2237.         call    _setirqvect
  2238.         mov     edi, offset irq0_buffer
  2239.         call    _rmpmirqset
  2240.         mov     old_rmode_irq0_vect, eax
  2241.  
  2242.         ; I assume that the timer is in its normal mode of operation at program
  2243.         ; startup and I have the ISR reprogram the timer for me.  That's also
  2244.         ; why I do the hooking early in the program set up, to make sure that
  2245.         ; atleast one timer interrupt goes off.  I'll synch the timer to the
  2246.         ; routines later in setup.
  2247.  
  2248.         sti
  2249.         ret
  2250.  
  2251. unhookirq0:
  2252.         cli
  2253.         mov     bl, 0
  2254.         mov     eax, old_rmode_irq0_vect
  2255.         call    _rmpmirqfree
  2256.         mov     edx, old_pmode_irq0_vect
  2257.         call    _setirqvect
  2258.  
  2259.         mov     al,  00110110b          ; timer 0, 16-bit counter, mode 3
  2260.         out     43h, al                 ; resets the timer.  What about
  2261.         xor     ax, ax                  ; reseting the time based on the
  2262.         out     40h, al                 ; CMOS clock?  Their time will be
  2263.         mov     al, ah                  ; wrong.
  2264.         out     40h, al
  2265.  
  2266.         ; this resets the timer to its normal mode of operation
  2267.  
  2268.         sti
  2269.         ret
  2270.  
  2271. newirq0:
  2272.         pushad
  2273.         cli
  2274.  
  2275.         call    wait_retrace   ; retrace is 1/70th of a sec, timer is usually 1/18.2
  2276.                                ; of a second.  No problem before first setting the
  2277.                                ; timer of having recursion.  After that the timer is
  2278.                                ; set for one shot, so there's no way the ISR goes
  2279.                                ; off twice.
  2280.                                ;
  2281.                                ; The CLI instruction just before doesn't hurt either
  2282.                                ; :-)
  2283.  
  2284.         ;
  2285.         ; reprogram the timer here...
  2286.         ;
  2287.  
  2288.         mov             al,  00111000b   ; timer 0, 16-bit counter, mode 4 (one shot)
  2289.         out             43h, al
  2290.         mov             ax, DELAY        ; the delay is just under 1/70th of a sec.  I don't
  2291.         out             40h, al          ; want to wait too long and miss the retrace.  Give
  2292.         mov             al, ah           ; a little room for interrupt latency and computers
  2293.         out             40h, al          ; that run nearer to 68 Hz refresh.
  2294.  
  2295.         call    [VBI_function]   ; put your blitting routine here?
  2296.  
  2297.         ; poll the music player here.
  2298.         ;
  2299.         ; makes life a little easy if the music is at a certain BPM
  2300.  
  2301.         inc     frame            ; frame count
  2302.         mov     al, 20h
  2303.         out     20h, al          ; EOI
  2304.         popad                    ; restore stack
  2305.         sti                      ; set interrupts
  2306.         iretd                    ; return
  2307.  
  2308. code32  ends
  2309. end
  2310.  
  2311. ---------------------------------------------------------------------------
  2312.  
  2313. (10.2) How long is one "clock cycle" on a particular machine?
  2314.  
  2315. It's the simple speed of the computer (xxMhz). So, for a program that syncs
  2316. with the vertical retrace, if the program is run on a 486/33 for example,
  2317. then for each retrace there is only 33000000/70 = 471428 clock cycles to
  2318. spare.
  2319.  
  2320. ---------------------------------------------------------------------------
  2321.  
  2322. (10.3) How do you do environment mapping?
  2323.  
  2324. If you've done a texture mapper, you're not far away from an environment
  2325. mapper. Say you want to environment map one face of an object. For each
  2326. vertex, get the vertex normal (it's just the average of all the normals of
  2327. the connected faces), then convert that into spherical coordinates (Rho,
  2328. Phi, and Theta; although Rho doesn't matter since normals are length 1)...
  2329. well Phi and Theta are now the spherical direction of that vertex. What you
  2330. do is, you use these two angles as the lookups into a giant spherical
  2331. texture map that theoretically surrounds the object. There are many ways to
  2332. do the "wrapping" of the sphere... I just took a 256x256 image, centered it
  2333. at the front, and curved the corners towards the back (which would be 128,
  2334. plus/minus phi in one direction, plus minus theta in another; you get the
  2335. idea... I can post the exact formulas if you can't figure 'em out, but
  2336. they're very simple). With this, you just use those two angles, process the
  2337. values into your wrapped texture to find the texture U,V at that vertex. Do
  2338. that for all four vertices and texture map as usual. Do it for all faces,
  2339. and you've got your envmapping.
  2340.  
  2341. Note though, that for all sphere objects (and note that a cube is just a
  2342. 6-sided sphere) with the map in the center, the vertex normals ARE the
  2343. normalized vertices, so it will give some strange results... it's better to
  2344. use objects that don't have the normals equal to the vertices themselves,
  2345. just so the envmapping looks legit. :-)
  2346.  
  2347. ---------------------------------------------------------------------------
  2348.  
  2349. (10.4) How can I do a DMA Putpixel or DMA Mem-to-Mem copy?
  2350.  
  2351. You shouldn't bother. Not only is the DMA controller limited to 64K
  2352. segments, but only on the slowest PC's (we're talking 8086 here) is it
  2353. faster than doing a REP MOVSW.
  2354.  
  2355. Still, DMA memory transfers take no CPU time at all, but you still
  2356. shouldn't use them because they're just too slow on modern PC's. If you
  2357. really want to do it anyway, just to see if it works, here's a small
  2358. article from 1989 by Patrick & David O'Riva that can help you. Remember, in
  2359. 1989 on a 286, this was faster than REP MOVSB. By the 386, however, a REP
  2360. MOVSD was faster, so this is reprinted for historical reference only.
  2361.  
  2362.                     DMA Transfers for FAST Memory Moves
  2363.  
  2364. If you ever have the need for super fast moves of blocks of memory and you
  2365. can put up with a lot of restrictions in order to gain the speed there is a
  2366. method in the PC environment to move bytes at the rate of one every 3 clock
  2367. cycles. Compare that to the clocks for a rep movsb and then say that isn't
  2368. fast. This isn't for every programmer and it certainly isn't for every time
  2369. you need to move a few bytes.
  2370.  
  2371. The DMA chip is a four channel device. Channel 0 is reserved for refresh of
  2372. memory that requires at least 256 consecutive bytes be read some- where in
  2373. memory at intervals less than about 4ms. The other three channels are
  2374. available for such things as transferring information to and from the disk
  2375. drives or the ports. Interesting trivia so far, but not very useful in
  2376. moving memory around. It gets worse. The 8259 DMA doesn't know anything
  2377. about segments. It only knows a 64k universe. This is where the Page
  2378. registers come in. The page registers decide which page (on 64k boundaries)
  2379. the 8259 will look at for any operation. There are not, as you might guess,
  2380. 4 page registers,but only 2 plus a default. If it is not channel 1 or 2
  2381. then it uses the default register programmed as channel 3.
  2382.  
  2383. A careful reading of the data sheet of the 8259 discloses that it is
  2384. capable of doing a memory to memory transfer but only between channels 0
  2385. and 1. That is why this method is a little tricky to use. In order to set
  2386. up your own parameters you have to disable the timer from asking for a DMA
  2387. from chan- nel 0 every x milliseconds and reconfigure the 8259 and assume
  2388. the respon- sibility for doing the memory refresh. It actually sounds worse
  2389. than it is. The configuring and re configuring of the 8259 doesn't take all
  2390. that long, so the time is made up after only moving a few tens of bytes,
  2391. and if you move at least 256 CONSECUTIVE bytes the memory refresh
  2392. requirement is met for another 2 or 3 milliseconds. The page registers are
  2393. taken care of by setting channels 1 and 3 to the same value.
  2394.  
  2395. Given below is an example of a program I wrote just to test the idea. A lot
  2396. of the setup is too complex to explain in this short article, but if you
  2397. are interested in checking it all out you will need a data sheet on the
  2398. 8259. This worked nicely on my machine and should on most compatibles just
  2399. the way it is. With the not-so-compatible it may very well not. I hope this
  2400. listing is well enough commented so you can figure it out and make use of
  2401. it sometime.
  2402.  
  2403. ` DMA SOURCE
  2404.  
  2405. PAGE 60,132
  2406. TITLE DMA MEMORY TO MEMORY
  2407.  
  2408. DMA         EQU 0
  2409.  
  2410. STACK       SEGMENT PUBLIC 'STACK'
  2411.             DB  32 DUP('STACK')
  2412. STACK       ENDS
  2413.  
  2414. DATA        SEGMENT PUBLIC 'DATA'
  2415. SOURCE      DW   08000H
  2416. TARGET      DW   09000H
  2417. NUMBER      DW   800H
  2418. INCDEC      DB   0
  2419. PAGER       DB   0BH    ;PAGE (O TO F)
  2420. FILL        DB   0      ;2 IF A FILL OP
  2421. DATA ENDS
  2422.  
  2423. ASSUME CS:CODE,DS:DATA,ES:DATA
  2424. CODE SEGMENT PUBLIC 'CODE'
  2425.  
  2426. START:
  2427.      MOV AX,DATA
  2428.      MOV DS,AX
  2429.      MOV AX,0B800H
  2430.      MOV ES,AX
  2431.  
  2432. PAGE:
  2433.      MOV AL,PAGER      ;PAGE TO OPERATE IN
  2434.      OUT 83H,AL
  2435.  
  2436. UNDMA:
  2437.      OUT 0DH,AL        ;MASTER RESET OF DMA
  2438.      MOV DX,03D8H
  2439.      MOV AL,1
  2440.      OUT DX,AL
  2441.      MOV AX,SOURCE     ;WHERE IS IT COMING FROM
  2442.      OUT 0H,AL
  2443.      MOV AL,AH
  2444.      OUT 0H,AL
  2445.      MOV AX,TARGET     ;WHERE TO PUT IT
  2446.      OUT 2H,AL
  2447.      MOV AL,AH
  2448.      OUT 2H,AL
  2449.      MOV AX,NUMBER     ;HOW MANY
  2450.      OUT 3H,AL
  2451.      MOV AL,AH
  2452.      OUT 3H,AL
  2453.      MOV AL,009H       ;ENABLE M TO M,COMPRESSED
  2454.      OR  AL,FILL       ;WILL BE 2 IF FILL OP
  2455.      OUT 8H,AL
  2456.      MOV AL,088H       ;BLOCK MODE, INC, READ
  2457.      OR  AL,INCDEC     ;WILL BE 20H IF DEC
  2458.      OUT 0BH,AL
  2459.      MOV AL,85H        ;BLOCK MODE, INC, WRITE
  2460.      OR  AL,INCDEC     ;WILL BE 20H IF DEC
  2461.      OUT 0BH,AL
  2462.      MOV AL,4          ;THIS IS THE REQUEST
  2463.      OUT 9,AL          ;DO IT
  2464.      MOV AL,9
  2465.      OUT DX,AL
  2466.  
  2467. RESET:
  2468.      OUT  0DH,AL       ;THIS IS A MASTER RESET
  2469.      OUT 0CH,AL        ;RESET F/L F/F
  2470.      MOV AL,01
  2471.      OUT 0,AL
  2472.      OUT 0,AL
  2473.  
  2474. REINIT:
  2475.      MOV AL,0
  2476.      OUT 83H,AL        ;MOVES REFRESH TO BASE PAGE
  2477.      MOV AL,0FFH
  2478.      OUT 1,AL
  2479.      PUSH   AX
  2480.      OUT 1,AL
  2481.      OUT 0BH,AL
  2482.      INC AL            ;MODE CHAN3
  2483.  
  2484.      OUT 0BH,AL
  2485.      PUSH   AX
  2486.      POP AX
  2487.      POP AX
  2488.      POP AX
  2489.      MOV AH,4CH
  2490.      INT 21H
  2491.  
  2492. CODE ENDS
  2493. END  ART
  2494.  
  2495. Kneebiter / Threesome had this to add: "If you're doing it to put a pixel,
  2496. it takes just as long to write to the DMA buffer as it takes to write to a
  2497. video buffer. If you want to use it to blit memory screens, you can get
  2498. about 15 frames in a second at maximum and the user can see the DMA doing
  2499. the copying. That, and it's a pain in the butt as you need to use 2 DMA
  2500. channels to do it, very specifically channels 0 and 1. Channel 0 is not
  2501. guaranteed to be free. Ever wonder why demos don't support DMA channel 0
  2502. for sound?"
  2503.  
  2504. Finally, some new mainboards (the Shuttle 433, for example) don't support
  2505. DMA mem->mem transfer anyway.
  2506.  
  2507. Are you getting the feeling you shouldn't ask about this any more? :-)
  2508.  
  2509. ---------------------------------------------------------------------------
  2510.  
  2511. (10.5) What's protected mode?
  2512.  
  2513. For the purpose of talking about demos and PC's, protected mode is an
  2514. operating mode of all Intel 80386 cpu's and higher that allows several
  2515. benefits for the coder over the older real mode, including:
  2516.  
  2517.    * The 1-cycle performance penalty is gone when accessing 32-bit
  2518.      registers (EAX, EBX, etc.) and extra registers (FS, GS, etc.) because
  2519.      you don't need the prefix override.
  2520.    * All the memory in the computer is available to the programmer, in
  2521.      large chunks of any size (not limited to 64K).
  2522.    * Memory is protected, so exceptions (accesses to memory a program
  2523.      doesn't own) can not only be trapped, but handled.
  2524.  
  2525. http://207.239.225.146/articles/pmbasics/tspec_a1_doc.html is one place
  2526. that has more information on protected-mode programming.
  2527.  
  2528. ---------------------------------------------------------------------------
  2529.  
  2530. (10.6) How do you do bump mapping?
  2531.  
  2532. Bump mapping isn't much harder than environment mapping: you just
  2533. precalculate a map which perterbs the normals (from phong/gouraud) by a
  2534. given angle. Combine it with a texture map to fit the perturbances, and it
  2535. looks bumpy.
  2536.  
  2537. Mr. P / Powersource adds more:
  2538.  
  2539. Bump mapping applies almost entirely to Phong shading only. Applying it
  2540. to other shading models is much more difficult because of the way it
  2541. works.
  2542.  
  2543. What we do is step through the maps like texture maps, but instead of
  2544. reading a color, we read an X displacement and a Y displacement. We then
  2545. add these values to the surface normal at that pixel (now it should be
  2546. obvious why Phong is the best suited to this), calculate the intensity,
  2547. and store it.
  2548.  
  2549. Again, if you want, you can use any coordinate system you want. I chose
  2550. a 2 dimensional displacement because that is basically how it is done
  2551. with environment mapped Phong.
  2552.  
  2553. Rex Deathstar sums it up like this: envmap[x+bumpx][y+bumpy] :-)
  2554.  
  2555. ---------------------------------------------------------------------------
  2556.  
  2557. (10.7) What's a fast way to calculate a square root?
  2558.  
  2559. My buddy JARE/Iguana was kind enough to donate this source code:
  2560.  
  2561. /*
  2562.  * A High Speed, Low Precision Square Root
  2563.  * by Paul Lalonde and Robert Dawson
  2564.  * from "Graphics Gems", Academic Press, 1990
  2565.  
  2566.  * Modified by Javier Arevalo to avoid some unnecessary shifts.
  2567.  * Seems like this adds some precision too, but I'm unsure.
  2568.  */
  2569.  
  2570. /*
  2571.  * SPARC implementation of a fast square root by table
  2572.  * lookup.
  2573.  * SPARC floating point format is as follows:
  2574.  *
  2575.  * BIT 31   30  23  22  0
  2576.  *     sign exponent    mantissa
  2577.  */
  2578.  
  2579. #include
  2580.  
  2581. long sqrttab[0x100]; // declare table of square roots
  2582.  
  2583. void build_table(void) {
  2584.     unsigned short i;
  2585.     float f;
  2586.     unsigned int *fi = (unsigned*)&f;   // To access the bits of a float in
  2587.                                         // C quickly we must misuse pointers
  2588.     for (i = 0; i <= 0x7f; i++) {
  2589.         *fi = 0;
  2590.  
  2591.             // Build a float with the bit pattern i as mantissa
  2592.             // and an exponent of 0, stored as 127
  2593.         *fi = (i << 16) | (127 << 23);
  2594.         f = sqrt(f);
  2595.  
  2596.             // Take the square root then strip the first 7 bits of
  2597.             // the mantissa into the table
  2598.         sqrttab[i] = (*fi & 0x7fffff);
  2599.  
  2600.             // Repeat the process, this time with an exponent of 1,
  2601.             // stored as 128
  2602.         *fi = 0;
  2603.         *fi = (i << 16) | (128 << 23);
  2604.         f = sqrt(f);
  2605.         sqrttab[i+0x80] = (*fi & 0x7fffff);
  2606.     }
  2607. }
  2608.  
  2609.     // fsqrt - fast square root by table lookup, original C version
  2610. float fsqrt(float n) {
  2611.     unsigned int *num = (unsigned *)&n; // to access the bits of a float in C
  2612.                                         // we must misuse pointers
  2613.  
  2614.     short e;        // the exponent
  2615.     if (n == 0) return (0); /* check for square root of 0 */
  2616.     e = (*num >> 23) - 127; /* get the exponent - on a SPARC the */
  2617.                             /* exponent is stored with 127 added */
  2618.     *num &= 0x7fffff;   /* leave only the mantissa */
  2619.     if (e & 0x01) *num |= 0x800000;
  2620.                 /* the exponent is odd so we have to */
  2621.                 /* look it up in the second half of  */
  2622.                 /* the lookup table, so we set the high bit */
  2623.     e >>= 1;    /* divide the exponent by two */
  2624.                 /* note that in C the shift */
  2625.                 /* operators are sign preserving */
  2626.                 /* for signed operands */
  2627.         // Do the table lookup, based on the quaternary mantissa,
  2628.         // then reconstruct the result back into a float
  2629.     *num = ((sqrttab[*num >> 16])) + ((e + 127) << 23);
  2630.     return(n);
  2631. }
  2632.  
  2633. // ---------------------------------------------------------------------
  2634. // Optimized Watcom inline version, 9-cycle? (Pentium), tested with 10.6.
  2635. // By Javier Arevalo, A.K.A. Jare/Iguana in 1996.
  2636. // E-mail me at jarevalo@ran.es for comments.
  2637.  
  2638. extern float VSSQ_Sqrt(float a);
  2639. #pragma aux VSSQ_Sqrt modify nomemory [EBX EDX] parm [EAX] value no8087 = \
  2640. "   MOV     EDX,EAX              " \
  2641. "   AND     EAX,0x007FFFFF       " \
  2642. "   SUB     EDX,0x3F800000       " \
  2643. "   MOV     EBX,EDX              " \
  2644. "   AND     EDX,0xFF000000       " \
  2645. "   SAR     EDX,1                " \
  2646. "   AND     EBX,0x00800000       " \
  2647. "   ADD     EDX,0x3F800000       " \
  2648. "   OR      EAX,EBX              " \
  2649. "   SHR     EAX,16               " \
  2650. "   MOV     EBX,OFFSET sqrttab   " \
  2651. "   DB      0x8B, 0x04, 0x83     " \
  2652. "   ADD     EAX,EDX              "
  2653.  
  2654. // Note that DB ... means MOV EAX,[4*EAX+EBX] which WC won't accept :(
  2655. // Unluckily it won't accept "MOV EAX,[4*EAX+sqrttab]" in DB either. :((
  2656. // It doesn't generate the relocation info for DD OFFSET sqrttab.
  2657. // Yes Watcom inline ASM sucks bigtime, but it's better than nothing.
  2658. // Will 2 AGIs be generated by both EBX & EAX being assigned before the
  2659. // address generation? I don't know but I can't fix this for inline code.
  2660.  
  2661. #include
  2662.  
  2663. //#define TRY(a) (printf(#a ": sqrt() == %f, fsqrt() == %f, error == %f\n",
  2664. sqrt(a), fsqrt(a), fabs(sqrt(a)-fsqrt(a))))
  2665. #define TRY(a) (printf(#a ": sqrt() == %f, fsqrt() == %f, error == %f\n",
  2666. sqrt(a), VSSQ_Sqrt(a), fabs(sqrt(a)-VSSQ_Sqrt(a))))
  2667.  
  2668. main() {
  2669.     build_table();
  2670.     TRY(1.0);
  2671.     TRY(2.0);
  2672.     TRY(4.0);
  2673.     TRY(1.522756);
  2674.     TRY(12341.1345);
  2675.     TRY(2346.522756);
  2676.     TRY(0.004522756);
  2677. }
  2678.  
  2679. Jyrki Alakuijala has come up with another way:
  2680.  
  2681. Integer SQRT seems to be a never ending thread. Here is an
  2682. evolution version of an approach I presented here some two-three
  2683. years ago. It is based on a different approach: generated C++ code.
  2684. That means that you have to compile it and run it. Then you have
  2685. to compile the result it produces to stdout and use that to
  2686. calculate square roots. The method uses lookup tables of values
  2687. and function pointers, fixed point piecewise linear approximation,
  2688. and binary search (huh). I used to have a version that I checked
  2689. to have +-1 accuracy for the whole range (0 - (2^32 - 1)). I
  2690. suspect that the version I am posting has an accuracy of +-2.
  2691.  
  2692. The code run 3-4 times faster on my machine than the code
  2693. recently presented in Dr Dobbs. However, this code has little
  2694. real value. The generated code may be too big for most purposes,
  2695. BUT it demonstrates a technique that can be used to model
  2696. arbitrary functions very efficiently.
  2697.  
  2698. I cannot claim that this is "very" fast. Still, it is the fastest
  2699. I have found. However, I feel that it should be possible to
  2700. speed it up by 50% by using computed gotos, some clever
  2701. asm tricks and, perhaps, by avoiding the integer multiplication.
  2702.  
  2703. BTW, make the actual function (isqrt) inline.
  2704.  
  2705. -----CLIP------
  2706. #include
  2707. #include
  2708. #include
  2709.  
  2710. #define FUNCNAME "i_sqrt"
  2711. #define FUNCTABLESHIFT 24
  2712. #define FUNCTABLESIZE 256
  2713. #define SMALLSQRTTABLE 256
  2714.  
  2715. #define NESTING() {int i; for (i = n; i--;) printf (" ");}
  2716.  
  2717. void muladd(double a0, double b0) {
  2718. #define SCALERA 0.3000
  2719. #define SCALERB 0.3333
  2720.   double a = (1.0 - SCALERA) * a0 + SCALERA * b0; /* hilliton kluge */
  2721.   double b = (1.0 - SCALERB) * b0 + SCALERB * a0; /* hilliton kluge */
  2722.   double mul = (sqrt(b) - sqrt(a)) / (b - a);
  2723.   int shift = (int)(- (log(mul) / log(2.0))); // round down
  2724.   int jappe = (1 << shift);
  2725.   unsigned int imul = (unsigned int)((mul * jappe * (1<<16)) + 0.5);
  2726.   if (sqrt(b0) > 65530.0) {
  2727.     printf ("{R US((%u+(((int)(val-%u)>>%d))*%d)>>16);}",
  2728.       (unsigned long)(sqrt(a) + 0.5) * (1 << 16),
  2729.       (unsigned long)(a + 0.5 - (0.4 * (1 << shift))),
  2730.       shift, imul);
  2731.   } else {
  2732.     printf ("{R US((%u+(((int)(val-%u)>>%d))*%d)>>16);}",
  2733.       (unsigned long)(sqrt(a) + 0.5) * (1 << 16),
  2734.       (unsigned long)(a + 0.5 - (0.5 * (1 << shift))),
  2735.       shift, imul);
  2736.   }
  2737. }
  2738.  
  2739. void recursion (double a, double b, int n) {
  2740.   if ((unsigned long)b <= (unsigned long)SMALLSQRTTABLE) {
  2741.     printf("\n");
  2742.     NESTING();
  2743.     printf("{return " FUNCNAME "SmallTable[val];}");
  2744.     return;
  2745.   }
  2746.   double midp = 0.5*a+0.5*b;
  2747.   double error = sqrt(midp) - (0.5*sqrt(a)+0.5*sqrt(b));
  2748.   if (error > 0.15) {
  2749.     printf("\n");
  2750.     NESTING(); printf("if(val<%u)", (unsigned long)((a + b) / 2.0 + 0.5));
  2751.     recursion (a, midp, n + 1);
  2752.     printf("\n");
  2753.     NESTING(); printf ("else");
  2754.     recursion (midp, b, n + 1);
  2755.   } else {
  2756.     muladd(a,b);
  2757.   }
  2758. }
  2759.  
  2760. void main () {
  2761.   int i, j;
  2762.   printf("unsigned char "FUNCNAME"SmallTable[] = {\n");
  2763.   for (j = 0; j < SMALLSQRTTABLE; j++) {
  2764.     printf("%d, ", (int) (sqrt(j)));
  2765.     if ((j % 16) == 15)
  2766.       printf("\n");
  2767.   }
  2768.   printf("};\n\n");
  2769.   printf("#define T(j) unsigned short j(register unsigned long val)\n");
  2770.   printf("#define R return\n");
  2771.   printf("#define UL (unsigned long)\n");
  2772.   printf("#define US (unsigned short)\n\n");
  2773.  
  2774.   for (i = 0; i < FUNCTABLESIZE; i++) {
  2775.     double start = i * (double)(1 << FUNCTABLESHIFT);
  2776.     double end = ((i + 1) * (double)(1 << FUNCTABLESHIFT));
  2777.     printf("\nT(%s%d){", FUNCNAME, i);
  2778.     recursion (start, end - 1.0, 1);
  2779.     printf("}");
  2780.   }
  2781.   printf("\nunsigned short (*sqrtFuncTable[])(unsigned long) = {\n");
  2782.   for (i = 0; i < FUNCTABLESIZE; i++) {
  2783.     printf("%s%d,", FUNCNAME, i);
  2784.     if ((i % 7) == 6)
  2785.       printf("\n");
  2786.   }
  2787.   printf("};\n\n"
  2788.     "unsigned short isqrt (register unsigned long val){\n"
  2789.     " return sqrtFuncTable[val >> %d](val);\n"
  2790.     "}", FUNCTABLESHIFT
  2791.   );
  2792. }
  2793. -----CLAP------
  2794.  
  2795. Have fun!
  2796.  
  2797. --Jyrki Alakuijala
  2798.  
  2799. ---------------------------------------------------------------------------
  2800.  
  2801. (10.8) What's Karl/NoooN's famous 40-byte sinus generator?
  2802.  
  2803. >From the ACE CD #2:
  2804.  
  2805. --(sin.txt)-------------------------------------------------------
  2806.  
  2807.   Here's some  explanation about the  sinus table generator in the
  2808.   ACE BBS advert.
  2809.   The method used is a recursive sinus sythesis.  It's possible to
  2810.   compute all sinus values with only the two previous ones and the
  2811.   value  of  cos(2π/N) , where  n  is the number of values for one
  2812.   period.
  2813.  
  2814.   It's as follow:
  2815.  
  2816.   Sin(K)=2.Cos(2π/N).Sin(K-1)-Sin(K-2)
  2817.  
  2818.   or
  2819.  
  2820.   Cos(K)=2.Cos(2π/N).Cos(K-1)-Cos(K-2)
  2821.  
  2822.   The last one is easiest to use , because the two first values of
  2823.   the cos table are 1 & cos(2π/n) and with this two values you are
  2824.   able to build all the following...
  2825.  
  2826.   Some simple code:
  2827.  
  2828.   the cos table has 1024 values & ranges from -2^24 to 2^24
  2829.  
  2830.   build_table:          lea    DI,cos_table
  2831.                         mov    CX,1022
  2832.                         mov    EBX,cos_table[4]
  2833.                         mov    EAX,EBX
  2834.   @@calc:
  2835.                         imul   EBX
  2836.                         shrd   EAX,EDX,23
  2837.                         sub    EAX,[DI-8]
  2838.                         stosd
  2839.                         loop   @@calc
  2840.  
  2841.   cos_table             dd     16777216     ; 2^24
  2842.                         dd     16776900     ; 2 ^24*cos(2π/1024)
  2843.                         dd     1022 dup (?)
  2844.  
  2845.                                Enjoy  KarL/NoooN
  2846.  
  2847. ---(sin.txt)------------------------------------------------------
  2848.  
  2849. ---------------------------------------------------------------------------
  2850.  
  2851. (10.9) Where can I get more info on programming VESA?
  2852.  
  2853. http://www.vesa.org is a good place to start; you can also get info from
  2854. SciTech (see FAQ 5.3).
  2855.  
  2856. ---------------------------------------------------------------------------
  2857.  
  2858. (10.10) I'm having trouble getting a VESA 2.0 Linear Frame Buffer
  2859. working... any tips?
  2860.  
  2861. Use the "Get Mode Info" function. It will fill in a struct, and one of the
  2862. members is a physical address that is a pointer to the linear frame buffer.
  2863. To access the physical address, you need to call DPMI function 800h to map
  2864. it to a linear address that you can make use of. When you load UNIVBE, it
  2865. should say something like linear frame buffer located at 4096 MB or
  2866. something like that, which is referring to the physical address, so you can
  2867. double-check with that when testing your code. Note, however, that the
  2868. physical address will be different on most systems, so you will have to get
  2869. it from the VESA Mode Info function.
  2870.  
  2871. ---------------------------------------------------------------------------
  2872.  
  2873. (10.11) Where can I find a list of Intel 80x86 opcodes?
  2874.  
  2875. Try http://www.quantasm.com for starters.
  2876.  
  2877. ---------------------------------------------------------------------------
  2878. Misc. Information
  2879. ---------------------------------------------------------------------------
  2880.  
  2881. (11.0) What CDROMs exist with demo-related material on them?
  2882.  
  2883. For info on CDROMs with demos and demo-music files on them, email Dan
  2884. Wright at dmw@gate.net to get a more-or-less complete list of them. If Dan
  2885. is unreachable, you can get a copy of this list at
  2886. http://www.mcs.com/~trixter/docs/scenecds.txt
  2887.  
  2888. Walnut Creek CDROM published Hornet Underground Volume 1, a CDROM of all
  2889. the demos on the Hornet archive as of May 1996. Hornet Undergound volume 2
  2890. is reportedly underway as well; visit http://www.cdrom.com for more info.
  2891.  
  2892. The following is a mini-review of some of Assembly Organizing's party CD's
  2893. submitted by Hugo Habets:
  2894.  
  2895.      On the cover of the CD-box is a picture of a monster and a boy. The
  2896.      monster is crying out and the boy is crying. At the top we can read
  2897.      "This CD is full of the best demos, music and graphics for PC and
  2898.      Amiga". At the bottom we can read (in bigger letters) "an ASSEMBLY
  2899.      Organizing production". At the back of the cover it's the same picture
  2900.      as on the front of the cover, only now it's a bit red-like with some
  2901.      text in small font and 6 pictures from the compos covering it.
  2902.  
  2903.      Very suprisingly, the first of those 6 pictures again is the picture
  2904.      of the monster with the boy. I don't recognize the second picture (not
  2905.      much time to search for it on the CD).. the third picture is from the
  2906.      CD menu (the Party 4 CD menu is very much like the Asm'94 CD menu, but
  2907.      with some improvements). The 4th picture shows the sea (probably from
  2908.      the graphics compo), the 5th picture is from the Valhalla intro. The
  2909.      last picture shows a face, a chess-board, mountains and a tree and is
  2910.      probably from the graphics compo also. The publisher seems to be
  2911.      'Romware'
  2912.  
  2913.      The front picture can be taken out of the CD cover and then magicly
  2914.      turns into a little book. Most of it is about the menu (or the GUI as
  2915.      it is called in the book).
  2916.  
  2917. page@ie2.u-psud.fr reminded me of this:
  2918.  
  2919. > I know another Audio CD :
  2920. >    Dr Awesome and Fleshbrain's "hoBbiTs & SpACesHipS"
  2921. >    by Bjorn A. Lynne and Seppo Hurme
  2922. >    from DENS DESIGN/CRUSADERS and Audio Visual Magic
  2923. >    (c) 1992
  2924. > with 12 songs and a time of 71'02".
  2925. >
  2926. > The ACE Demo Collection Vol. 1 & 2 costs 99 FF.
  2927. > And the number 3 will arrive in december 1995, and the 4th in july 1996.
  2928.  
  2929. Rene V. C. (Zteel of Diffusion) also had this to add:
  2930.  
  2931. >Here are some of the ones I can remember.
  2932. >
  2933. >Assembly '94
  2934. >The Party '94
  2935. >ACE #1
  2936. >ACE #2
  2937. >
  2938. >Btw: for info on the ACE cd's, write to yvon@sept.fr
  2939. >
  2940. >Anyway, the 'The Party CD' costed 120FIM at Assembly, filled with all
  2941. >releases from The Party 1994, and the best from Abduction and Juhla I
  2942. >think it was. The Assembly CD, well, has everything from Assembly
  2943. >1994, along with a bunch of movies and animations.
  2944. >
  2945. >The ACE's costs aprox. 80F .. (french franc)
  2946.  
  2947. ---------------------------------------------------------------------------
  2948.  
  2949. (11.1) I want to create my own demo or demo-music CDROM... What's involved?
  2950.  
  2951. Usually, most demo coders don't want their productions put on a CDROM
  2952. without their permission, because they feel that the person selling the
  2953. CDROM's makes profit off of their work. So, the only true demo CDROMs that
  2954. have been produced so far are by Dan Wright (dmw@gate.net), who
  2955. manufactures and sells them -- while all the time *breaking even*. This is
  2956. important: He doesn't lose money, but doesn't make any money either, so no
  2957. one feels taken advantage of. What a cool guy. :-)
  2958.  
  2959. Dan Wright wrote an excellent article on creating your own CDROM; this
  2960. article is part of the "demobook" on the Freedom CD. You can also email him
  2961. to get a copy.
  2962.  
  2963. As to how to create an audio CD of mod-style music, Dan Wright offers:
  2964.  
  2965.      "We took the modules and pumped them through the Gravis
  2966.      Ultrasound...grounded the computer to the stereo, funneled the sound
  2967.      through a "DSP" that added reverb(hall), flange, and all that other
  2968.      stuff I got a few complaints on. From there the signal made its way
  2969.      through an equalizer, then the master receiver and finally to the SONY
  2970.      DAT player. Once the DAT was made I paid someone $175 to create a CD-R
  2971.      with all the time stamping and music equalization."
  2972.  
  2973. Another way to do it is to just use the "direct-to-disk" mode of Mod4Win,
  2974. or the "Disk Writer" device of Cubic Player. Instead of playing the module,
  2975. these methods write out a 44.1KHz 16-bit stereo .WAV file of the song,
  2976. which is the format audio CDs use. Many CD-ROM writer software programs
  2977. take .wav files and burn them directly into CD audio tracks.
  2978.  
  2979. ---------------------------------------------------------------------------
  2980.  
  2981. (11.2) What are some of the more interesting quotes said in the demoscene?
  2982.  
  2983. Trixter maintains (more or less :-) a list of interesting things heard in
  2984. the PC demo scene. You can get this list from
  2985. http://www.mcs.com/~trixter/docs/demoquot.txt
  2986.  
  2987. ---------------------------------------------------------------------------
  2988.  
  2989. (11.3) What are some of the hidden parts in demos?
  2990.  
  2991. Phoenix / KFMF (vossa@rpi.edu) has compiled a list of hidden parts in
  2992. demos. For the most recent version of the list, request it from Phoenix
  2993. directly, or view it on the WWW at http://www.rpi.edu/~vossa/secret.txt.
  2994.  
  2995. ---------------------------------------------------------------------------
  2996.  
  2997. (11.4) Where did the "I am not an Atomic Playboy" sample come from?
  2998.  
  2999. (This sample is used in a part of Second Reality's soundtrack composed by
  3000. Purple Motion.)
  3001.  
  3002. There are many theories, actually. One is that the words "I am not an
  3003. Atomic Playboy" come from the song "Atomic Playboys" by the American rock
  3004. group called Atomic Playboys (don't ask). The band was fronted by Steve
  3005. Stevens, the guitarist from the Michael Jackson video "Diry Diana".
  3006. (Stevens was also responsible for the excellent Top Gun anthema with Harold
  3007. Faltermayer from the Top Gun soundtrack.)
  3008.  
  3009. Another is that the "I am not an Atomic Playboy" sample was from a speech
  3010. by Richard Nixon (at one time, president of the US).
  3011.  
  3012. Yet a third was suggested by IOR / Hornet:
  3013.  
  3014.      I don't think it was Nixon, but I can tell you exactly where the first
  3015.      use of "I am not an atomic playboy" was... or at least where you can
  3016.      find it now. And it's not from an American rock group. Or from a
  3017.      techno song.
  3018.  
  3019.      It's from a documentary on Nuclear Proliferation and Nuclear Tests on
  3020.      Binkini Atoll, called "Radio Bikini"... The entire quote is this:
  3021.  
  3022.      "I am not an atomic playboy, as my critics have called me."
  3023.  
  3024.      Of course, I doubt that PM took the sample from Radio Bikini, but
  3025.      regardless, that's the first place it showed up.
  3026.  
  3027. Of course, I don't think that IOR thought about the possibility that the
  3028. speech from Radio Bikini was Richard Nixon. :-)
  3029.  
  3030. ---------------------------------------------------------------------------
  3031.  
  3032. (11.5) Where did "Is everybody in?" sample come from?
  3033.  
  3034. The sample "Is everybody in? Is everybody in? The ceremony is about to
  3035. begin." used in Verses / EMF came from the movie "The Doors" starring Val
  3036. Kilmer.
  3037.  
  3038. ---------------------------------------------------------------------------
  3039.  
  3040. (11.6) Are there really 23,800 faces in the bee object in Stars / NoooN?
  3041.  
  3042. Aumury Aubel speculates:
  3043.  
  3044. Nooon's bee is optimised to hell, that's for sure. And it is very likely the
  3045. original 3DS model is made up of 23,800 faces. How did they manage though?
  3046.  
  3047.  As someone pointed out, the bee moves along a single axis. That reduces
  3048. drastically the number of multiplications. And obviously there are not 23,800
  3049. faces simultaneously displayed...
  3050.  
  3051.  It doesn't move a lot around, which means it is pretty easy to get away with
  3052. the hidden face test. In my opinion, there's no test at all. I've seen this
  3053. done by some friends of mine and it works perfectly:)
  3054.  
  3055.  There is also a wide-spread rumour saying that they didn't actually compute
  3056. all the bee's positions: every eighth frame and used linear interpolation
  3057. inbetween. That *could* work but I haven't tried it myself, nor have the
  3058. people I know. I've heard someone say this had been done in an old amiga demo
  3059. though.
  3060.  
  3061.  The third possible trick is to avoid any divide. Who said you need to perform
  3062. divides to perspective project a vector? A divide is nothing but a multiply.
  3063. Think it over:)
  3064.  
  3065.  An even beter solution is to remove all multiply operations as well. This is
  3066. feasable, I've seen it done folks! And it runs a lot faster and without any
  3067. large precalculation tables...Nooon might have done something similar even
  3068. though I doubt it.
  3069.  
  3070.  Once you removed the rotation/projection part and the hidden faces test, what
  3071. remains to be optimized? the rendering...Nooon's rendering algorithm is
  3072. thoroughly optimized. Just check out their various toruses:)
  3073. But even so, I bet that it's the part on which MOST OF THE TIME IS SPENT.
  3074.  
  3075.  Finally, they may have used some other tricks. Who said they use actual
  3076. vectors. The bee's wings could be easily replaced by sprites...Sure it would
  3077. not be very noticeable...And keep in mind it's a demo, in other words, it is
  3078. NOT actual real-time.
  3079.  
  3080.  Last but not least I've met Karl twice and he's a damn good coder. That
  3081. accounts for most of their superb effects!
  3082.  
  3083. Amaury.
  3084.  
  3085. ---------------------------------------------------------------------------
  3086.  
  3087. (11.7) How many people read comp.sys.ibm.pc.demos?
  3088.  
  3089. Makrus was surfing one day and found out the statistics:
  3090.  
  3091. I was just surfing and I found a site (tile.net) which contains statistics
  3092. about different newsgroups. This is what was said about c.s.i.p.d:
  3093.  
  3094. "Actual readers of this group: 29000
  3095.  Average number of messages per day: 30
  3096.  Kilobytes per day: 163k
  3097.  Percentage of Internet sites who receive this group: 70%
  3098.  Crossposting: 13%"
  3099.  
  3100. Personally I was amazed by the number of readers (it may be very inaccurate
  3101. however!). What do you think (is 29000 more than you've ever imagined?) about
  3102. this? And what could be the number of demosceners then (all sceners don't
  3103. read the news)?
  3104.  
  3105. And just for comparison I checked the statistics of alt.sys.amiga.demos:
  3106. 11000 / 6 / 10K / 56% / 10%
  3107. --
  3108. Makrus
  3109. Abd'96 MO
  3110.  
  3111. While I think 29,000 is a bit high, I wouldn't be surprised if the number
  3112. was over 10,000.
  3113.  
  3114. ---------------------------------------------------------------------------
  3115. Contact Information:
  3116. ---------------------------------------------------------------------------
  3117.  
  3118. (100.0) Who's contributed to this FAQ?
  3119.  
  3120. The creator was Houman Ghahremanlou, who wrote answers to questions 1.0 to
  3121. 3.0, with some small help from Trixter / Hornet's PC Demos Explained page.
  3122. Trixter then reformatted the FAQ, added the rest, became the maintainer,
  3123. and continues to add to it.
  3124.  
  3125. Once released, many people submitted some contributions. Trixter would like
  3126. to thank the following people for submitting to the FAQ, or to
  3127. comp.sys.ibm.pc.demos with valuable information that has been included:
  3128.  
  3129. "Luc-Eric Rousseau" (l.e.rousseau@usa.net)
  3130. "RC Hoeft" (rchoefz1@ulkyvm.louisville.edu)
  3131. "Warren E. Downs" (downwa@wwc.edu)
  3132. Alain Chardonnens <100124.1007@compuserve.com>
  3133. Amaury AUBEL (amaury@cln46fw.der.edf.fr)
  3134. AndrΘas Kⁿhne (andreas.kuhne@mailbox.swipnet.se)
  3135. Anssi.Saari@lmf.eua.ericsson.se (Anssi Saari)
  3136. Bastiaan_Zapf@p77.secobox.leine.de (Bastiaan Zapf)
  3137. Ben Shelton (diablo@wcarchive.cdrom.com)
  3138. Blake Kadatz (blake_kadatz@mindlink.bc.ca)
  3139. CMSLHES1@vaxc.livjm.ac.uk (Liam the lemming)
  3140. Canard@ax.com (Canard)
  3141. Captain Hook / THI (pjscorreia@telepac.pt)
  3142. Charles Scheffold (daredevi@amanda.dorsai.org)
  3143. Chris Hargrove (kiwidog@vt.edu)
  3144. Christian Cohnen (cohnen@uni-koblenz.de)
  3145. Cobra@aloha.com (cobra)
  3146. Dan Wright... enough said.  :-)
  3147. Diogo 'Spellcaster' Andrade (l42686@alfa.ist.utl.pt)
  3148. Frans Bouma (perseus@xs4all.nl)
  3149. GD / Hornet  (gd@ftp.hornet.org)
  3150. Gary D Stowasser (gary+@andrew.cmu.edu)
  3151. Hamid Moazed (hamid@rs.com)
  3152. Heikki Ylinen (flap / Capacala) (flap@flap.pp.fi)
  3153. Houman Ghahremanlou (ghahrema@bowler.dacc.wisc.edu)
  3154. Jason Maas (clueless@WPI.EDU)
  3155. Jason Nunn (root@superr.topend.com.au)
  3156. Jesse Rothenberg (jroth@mailhost2.csusm.edu)
  3157. Johannes Lehtinen (jle@cs.hut.fi)
  3158. Jordan Phillips (jordanp@cent.com)
  3159. Jyrki Saarinen (jsaarinen@kone.fipnet.fi)
  3160. Kemal Bayram (omeec@westminster.ac.uk)
  3161. Kenneth Foo Chuan Khit (kenfoo@techm.pl.my)
  3162. Kilian Hekhuis (jal@hacom.nl)
  3163. Kim Davies (kimba@it.com.au)
  3164. Lars Troen (Lars.Troen@colargol.idb.hist.no)
  3165. Lee Chun Kwok (h9504367@hkueee.hku.hk)
  3166. Lewis Berrie (hd66@dial.pipex.com)
  3167. Lewis Sellers (bcannon@usit.net)
  3168. Luca D'Ambros (micro@comedia.it)
  3169. Mark Edward Hardwidge (hardwidg@tvd0002.urh.uiuc.edu)
  3170. Michael Seow (Eaglehawk@c031.aone.net.au)
  3171. Morten Eriksen (MORTENER@sofus.hiof.no)
  3172. Niklas Kring
  3173. Paul Bragiel (bragiel@students.uiuc.edu)
  3174. Paul Hsieh (qed@xenon.chromatic.com)
  3175. Pekka Aakko (pehu@icon.fi)
  3176. Peter Kendell (P.Kendell@bra0119.wins.icl.co.uk)
  3177. Petteri.Kangaslampi@research.nokia.com (Petteri Kangaslampi)
  3178. Phil Jones (fil@muon.demon.co.uk)
  3179. Praveen \"Ripclaw\" Reddy (praveen@elf.udw.ac.za)
  3180. Quantum Porcupine (jshagam@nmsu.edu)
  3181. Renaud Guerin (renaudg@club-internet.fr)
  3182. Rene Vinding Christensen (rvc@vision.auc.dk)
  3183. S M Carless (S.M.Carless@durham.ac.uk)
  3184. Sam (Samuel.Marshall@durham.ac.uk)
  3185. Samuli Syvahuoko (gore@clinet.fi)
  3186. Sietze Dijkstra (sdijkstr@cs.ruu.nl)
  3187. Simon Bostock (Simon@simjohn.demon.co.uk)
  3188. Sleeping Dog / The Natives
  3189. Snowman / Hornet (r3cgm@hornet.org)
  3190. Stephen Takacs (takacs@eng.usf.edu)
  3191. Sumaleth@starfury.apana.org.au (Rowan Crawford)
  3192. T H Pineapple (thp@cix.compulink.co.uk)
  3193. THE ROPESTER (mjfi3sjr@umist.ac.uk)
  3194. TORNERO@LAMBDA.UPC.ES (TORNERO GARCIA, JOSE)
  3195. Tero Pulkkinen (terop@kotka.cs.tut.fi)
  3196. Todd M Zimnoch (tz26+@andrew.cmu.edu)
  3197. Toni Lindroos (tonilind@netti.fi)
  3198. Totty (totty@mi.net)
  3199. XtaC (jwalther@smartt.com (XtaC))
  3200. ac@interaccess.com (Andrew Carlson)
  3201. adia@egnatia.ee.auth.gr (Alejandros Diamandidis)
  3202. alang012 (dsteg838@student2.uwsp.edu)
  3203. ammo@xs4all.nl (ammo)
  3204. andreas.kuhne@mailbox.swipnet.se (AndrΘas Kⁿhne)
  3205. aronchce@sp.zrz.TU-Berlin.DE (AiRoN)
  3206. aschlud@autelca.ascom.ch (Denis Schluchter)
  3207. azure@people-s.people.de (Tim Boescke)
  3208. beppu@rigel.oac.uci.edu (John Beppu)
  3209. beren@infolink.no (Niklas Saers)
  3210. blake@widomaker.com (Blake Patterson)
  3211. bq689@freenet.carleton.ca (Anis Ahmad)
  3212. centero@mail.ddnet.es
  3213. chaos@wiloyee.shnet.org
  3214. chuck@freeside.fc.net (Chuck Walbourn)
  3215. clef@suburbia.net (Phil Sweeney)
  3216. dagsm@infolink.no (Finrod / Ewox)
  3217. daredevi@dorsai.org (Charles Scheffold)
  3218. davidm@them.com (David Mandala)
  3219. deathstr@singnet.com.sg (Rex Guo Yiwei)
  3220. dennisc@community.net (dennis courtney)
  3221. devine@cs.ualberta.ca (Michael Devine)
  3222. devries@cam.org (Mike DeVries)
  3223. dhk_fj@p10.nix.fido.teuto.de (Christian Kram)
  3224. dmw@gate.net (Out There!)
  3225. dominion@ripco.com (Michael Chisari)
  3226. ekallion@cc.Helsinki.FI (Esa J Kallioniemi)
  3227. fc@fee.uva.nl (Frank Compagner)
  3228. fischerj@Informatik.TU-Muenchen.DE (Juergen Fischer)
  3229. fmah@morse.ecn.purdue.edu (Frederick Y Mah)
  3230. francois.baligant@ping.be (Francois Baligant)
  3231. fuller (fuller@hap.arnold.af.mil)
  3232. fuzz@ionline.net (Arlo Gingerich)
  3233. gberigan@cse.unl.edu (Greg Berigan)
  3234. gerald@parker.EECS.Berkeley.EDU (THE Gerald)
  3235. ghahrema@bowler.dacc.wisc.edu (Houman Ghahremanlou)
  3236. grosje_s@epita.fr (Le Fongus jaune)
  3237. gruel@hondo.cyberverse.com (Nick)
  3238. gt4148b@prism.gatech.edu (Stephen Carter Morgan)
  3239. habets@worldaccess.nl
  3240. hb@cafu.fl.net.au (Nicholas Vinen)
  3241. ithomson@mortimer.com (Ian Thomson)
  3242. j.fenkes@public.ndh.com (Joachim Fenkes)
  3243. jakarppi@raita.oulu.fi (Jari Karppinen)
  3244. jarevalo@sip.es
  3245. jarno heikkinen (jmag@cOmPLeX.math.jyu.fi)
  3246. jean-marc.leang@ping.be (JML)
  3247. jeanmarc.leang@ping.be (marmelade)
  3248. jim@kd3bj.ampr.org (Jim Paris)
  3249. jisidoro@acs.bu.edu
  3250. joemess@mail.utexas.edu (helpless boy)
  3251. jroth@coyote.csusm.edu (Jesse Rothenberg)
  3252. jsno@amigar.apana.org.au
  3253. jth@jth.ping.de (Jens Theisen)
  3254. jukkak@dns.mikrobitti.fi (Jukka O Kauppinen)
  3255. kimmy@planet.fi (Kimmy/PULP)
  3256. kiwidog@mail.vt.edu (Chris Hargrove)
  3257. larsen@lal.cs.utah.edu (Steve Larsen)
  3258. larstr@colargol.idb.hist.no (Lars Troen)
  3259. lcs@lysator.liu.se (Martin Blom)
  3260. lodder@cuci.nl
  3261. matthewp@netcom.com (Matt Pritchard)
  3262. maurala@cc.hut.fi (Markus Aurala)
  3263. mdaniel@zeus.polsl.gliwice.pl (Milosz Danielewski)
  3264. millen3@alum01.its.rpi.edu (Neal W. Miller)
  3265. mithril@ict.org (Jeremy Tavan)
  3266. mithril@ng.netgate.net (Jeremy Tavan)
  3267. more@stekt.oulu.fi (Jyrki Alakuijala)
  3268. mrp@spartan.pei.edu (Mr.P / Powersource)
  3269. mrytkola@tor.abo.fi (Markus Rytk|l{ INF)
  3270. mud@merlin.sedona.net (Justin Frankel)
  3271. mystical@inet.uni-c.dk (Asbjorn Andersen)
  3272. page@ie2.u-psud.fr
  3273. perseus@xs1.xs4all.nl
  3274. plexus@plexus.seanet.com (James B. Johnson)
  3275. porat@ibm.net (Hand of Fate)
  3276. ppsloan@buzzworm.cs.utah.edu (Peter Sloan)
  3277. prsam1@MFS02.cc.monash.edu.au (Paul Sampson)
  3278. rawvibes@ix.netcom.com
  3279. rbarnhar@freenet.niagara.com (Robert Barnhardt)
  3280. rbeath@julian.uwo.ca (Stephen Beath)
  3281. rcskb@minyos.xx.rmit.EDU.AU (Kendall Bennett)
  3282. resimmon@students.uiuc.edu (simmons russel evan)
  3283. rimbo@ccwf.cc.utexas.edu
  3284. rob@span.com
  3285. rolando@knoware.nl (Scout/SuccesS)
  3286. rvc@vision.auc.dk
  3287. ryan.mahoney@tssbbs.com (Ryan Mahoney)
  3288. ryston@login.cz (Martin Pilny)
  3289. s106275@cs.tut.fi (Anssi Saari)
  3290. s9106065@student.utwente.nl (Sparcus / Nostalgia)
  3291. sci-slb@groper.jcu.edu.au (Stephen Banhuk)
  3292. slmyv@paradise.declab.usu.edu (Denys Larry)
  3293. smh@europa.com (smh)
  3294. src@cray.tuug.utu.fi (Saracen / EMF)
  3295. sschaem@teleport.com (Stephan Schaem)
  3296. sshah@intranet.ca
  3297. tedjones@voyager.co.nz (Oliver Jones)
  3298. then@superpallo.cs.hut.fi (Tomi Holger Engdahl)
  3299. thomasep@funcom.com (Thomas Egeskov Petersen)
  3300. tom@halls1.cc.monash.edu.au (Tom PATON - Tom)
  3301. trixter@mcs.com (Trixter / Hornet)
  3302. tst@dcs.ed.ac.uk (Tristan Tarrant)
  3303. tw@wile.thetech.org (Tod Weitzel)
  3304. vossa@matisse.its.rpi.edu (xproject)
  3305. whippet1@quiknet.com (Scott Tyson)
  3306. yrmafa@utu.fi (Yrj| Fager)
  3307. yvon@sept.fr (christophe yvon)
  3308. zsazS (kfpeters@artsci.wustl.edu)
  3309.  
  3310. ---------------------------------------------------------------------------
  3311.  
  3312. (100.1) How can I contact you to submit something?
  3313.  
  3314. Anything that makes this FAQ bigger and better is welcome, so please mail
  3315. me your suggestions at trixter@mcs.com
  3316.  
  3317. ---------------------------------------------------------------------------
  3318.  
  3319. FAQ Greets:
  3320.  
  3321. Respect goes to Dan Wright, who started the whole "demos on the Internet"
  3322. thing in 1992. Of course, thanks go to Houman for starting this thing;
  3323. greets also to Snowman, for being a good friend and bringing me back into
  3324. the scene when I was going to quit in 1995. Finally, thanks to all past and
  3325. present comp.sys.ibm.pc.demos members and lurkers.
  3326.  
  3327.